定义: $interpolate:编译一段带有嵌入标记的语句,然后返回一个interpolate(插值)函数。
使用: $interpolate(text,[mustHaveException],[trustContext],[allOrNothing])
text[String] 需要被编译的字符串(必需)
mustHaveException[boolean] : if true,当传入的字符串中不含有表达式时会返回null
trustContext[String] : AngularJS会对已经进行过字符插值操作的字符串通过 $sce.getTrusted(interpolatedResult, trustedContext) 方法进行严格的上下文转义
返回值:function(contest) 一个用来计算带有插值标记语句的函数,context为嵌入标记语句中的表达式提供上下文。
代码示例:

<div ng-app="MyApp">
<div ng-controller="MyController">
To:<input ng-model="to" type="text" placeholder="Recipient">
<textarea ng-model="emailBody"></textarea>
<pre>{{ previewText }}</pre>
</div>
</div>

  

angular.module('MyApp', [])
.controller('MyController', function($scope, $interpolate) {
// 设置监听
$scope.$watch('emailBody', function(body) {
if (body) {
var template = $interpolate(body);
$scope.previewText = template({to: $scope.to});
}
});
});

在控制器中,我们设置了$watch来监视邮件正文的变化,并将emailBody属性的值进行字符串插值后的结果复制给previewText属性。在 {{ previewText }} 内部的文本中可以将 {{ to }} 当作一个变量来使用,并对文本的变化进行实时更新。

运行结果:

Edit in JSFiddle

如果需要在文本中使用不同于{{ }}的符号来标识表达式的开始和结束,可以在$inter polateProvider中配置。

用startSymbol()方法可以修改标识开始的符号。这个方法接受一个参数value(字符型):开始符号的值。
用endSymbol()方法可以修改标识结束的符号。这个方法也接受一个参数value(字符型):结束符号的值。
如果需要修改这两个符号的设置,需要在创建新模块时将$interpolateProvider注入进去。

angular.module('emailParser', [])
.config(['$interpolateProvider', function($interpolateProvider) {
$interpolateProvider.startSymbol('__');
$interpolateProvider.endSymbol('__');
}])
.factory('EmailParser', ['$interpolate', function($interpolate) {
// 处理解析的服务
return {
parse: function(text, context) {
var template = $interpolate(text);
return template(context);
}
};
}]);
将服务注入到应用中: 
angular.module('MyApp', ['emailParser'])
.controller('MyController', ['$scope', 'EmailParser',
function($scope, EmailParser) {
// 设置监听
$scope.$watch('emailBody', function(body) {
if (body) {
$scope.previewText = EmailParser.parse(body, {to: $scope.to});
}
});
}]);
<div id="emailEditor">
<input ng-model="to" type="text" placeholder="Recipient" />
<textarea ng-model="emailBody"></textarea>
</div>
<div id="emailPreview">
<pre>__ previewText __</pre>
</div>

AngularJS 插值字符串 $interpolate的更多相关文章

  1. angularjs——插值字符串

    一.何为插值字符串? 其实插值字符串的意思就是:拥有字符插值标记的字符串.如: hello,{{ to }}....字符插值标记:相当于我们平时在字符串替换中使用到的占位符.上面的例子中的{{to}} ...

  2. angularjs字符串插值($interpolate)

    <!DOCTYPE html> <html lang="zh-CN" ng-app="app"> <head> <me ...

  3. Angular表达式--插值字符串($interpolate)

    要在字符串模板中做插值操作,需要在你的对象中注入$interpolate服务.在下面的例子中,我们将会将它注入到一个控制器中: angular.module('myApp', []) .control ...

  4. Angular 插值字符串

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  5. AngularJS 截取字符串

    参考文章:https://blog.csdn.net/u010234516/article/details/54631525 //过滤器 app.filter('textLengthSet', fun ...

  6. Groovy--使用模板引擎和GroovyShell执行插值字符串

    package curveJudge import groovy.text.SimpleTemplateEngine /** * Created by Jxy on 2019/8/26 17:16 * ...

  7. Haskell语言学习笔记(86)字符串格式化与插值

    String 的格式化 Text.Printf 这个模块用来处理字符串格式化. printf :: PrintfType r => String -> r printf 用于格式化字符串, ...

  8. AngularJS入门 & 分页 & CRUD示例

    一.AngularJS 简介 ​ AngularJS  诞生于2009年,由Misko Hevery 等人创建,后为Google所收购.是一款优秀的前端JS框架,已经被用于Google的多款产品当中. ...

  9. Python:2维(平面/数组/矩阵)缺省值插值

    学习自:python插值填补缺省值_插值缺失值2d python_weixin_39592315的博客-CSDN博客 问题 假设我们有一个2D数组(或者矩阵),其中有一些缺省值NaN,就像下边这样: ...

随机推荐

  1. adb server version (31) doesn't match this client (41); killing...

    1.有时候用adb工具去连接安卓设备,或者模拟器的时候,会提示adb server version(31) doesn’t match this client(41)这样的提示.如图 提示的字面意思就 ...

  2. Cross-channel Communication Networks

    Cross-channel Communication Networks 2019-12-13 14:17:18 Paper: https://papers.nips.cc/paper/8411-cr ...

  3. pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your path

    使用pytesseract识别验证码中遇到异常如下: pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installe ...

  4. BIO,NIO,AIO到NETTY

    NIO 近期接触了几个产品都触及NIO,要么应用,要么改造项目,听多了也有些了解,但仍然不能真正理解,工期比较赶,还是要潜心下来看看. NIO是什么呢,应该是NOT-BLOCKING IO的意思,不阻 ...

  5. k8s记录-国内下载k8s组件镜像

    #!/bin/sh ### 版本信息 K8S_VERSION=v1.13.2 ETCD_VERSION=3.2.24 DASHBOARD_VERSION=v1.8.3 FLANNEL_VERSION= ...

  6. shell中函数的使用

    函数是一个脚本代码块,你可以对它进行自定义命名,并且可以在脚本中任意位置使用这个函数.如果想要这个函数,只要调用这个函数的名称就可以了.使用函数的好处在于模块化以及代码可读性强. (1).函数的创建语 ...

  7. 对step文件进行信息抽取算法

    任务描述:给定一个step文件,对该文件的字符串进行信息抽取,结构化的组织文件描述模型的数据.形成抽象化数据结构,存入计算机数据库.并能按照有条理结构把这些数据展示出来. 信息抽取的结果描述: 1 数 ...

  8. 使用pkg打包node.js项目(egg框架)为可执行包

    问题: 公司有个工具型项目使用node.js 开发,需要部署到客户的服务器中,遇到的问题: 1.客户的服务器没有外网.环境配置,依赖安装等都比较麻烦,只能手工上传,最好能一个文件直接搞定: 2.直接包 ...

  9. Swarm 集群并用 Portainer 管理

    https://blog.csdn.net/zhrq95/article/details/79430284 使用docker-proxy代理服务(所有节点): docker pull docker.i ...

  10. Git 配置环境

    安装 在Fedora/CentOS下安装 $ sudo yum install git 在Debian/Ubuntu Linux下载安装 $ sudo apt-get install git Wind ...