博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Angular - - $interpolate 和 $parse
阅读量:6166 次
发布时间:2019-06-21

本文共 1843 字,大约阅读时间需要 6 分钟。

$interpolate

将一个字符串编译成一个插值函数。HTML编译服务使用这个服务完成数据绑定。

使用:$interpolate(text,[mustHaveExpression],[trustedContext],[allOrNothing]);

text:需要被编译的字符串。

mustHaveExpression:boolean,如果为true,那么text必须含有嵌入其中的表达式,不然将会返回null,而不是预期的interpolate function,默认为false。

trustedContext:string,如果这个参数被提供,那么在返回相应的函数之前会使用$sce.getTrusted(interpolatedResult, trustedContext)对返回的结果做处理。

$interpolate带有一个可选的第四个参数,allOrNothing。如果allOrNothing为true,插值函数将会返回未定义除非所有嵌入表达式的计算结果不为undefined。

使用代码:

{ {ctrl.value}}
(function(){     angular.module('Demo', [])     .controller('testCtrl',["$interpolate","$scope",testCtrl]);     function testCtrl($interpolate,$scope) { var vm = this; var obj = { value: "Hello" }; vm.text = "World"; $scope.$watch("ctrl.text",function(n,o){ var interpolate = $interpolate("{ {value}} " + n); vm.value = interpolate(obj); }) } }());

 

$parse

将Angular表达式转换为函数。

使用:$parse(expression);

expression:被编译的表达式。

返回:表示表达式编译后的函数。function(context,locals)

context:对象,含有需要解析的语句中的表达式(通常是一个scope对象)。

locals:对象,局部变量的上下文对象,用于重写上下文中的值。

属性

literal:boolean,表达式的顶节点是否是一个javascript字面量。

constant:boolean, 表达式是否全部是由javascript的常量字面量组成。

assign:function(context,locals),可以用来在给定的上下文中修改表达式的值。

使用代码:

{ {ctrl.ParsedValue}}
(function(){     angular.module('Demo', [])     .controller('testCtrl',["$parse",testCtrl]);     function testCtrl($parse) { var vm = this; var context = { add: function (a, b) { return a + b; },    mul: function (a, b) { return a * b } }; var data = {a: 2, b: 3, c: 4}; vm.value = context.mul(data.a,context.add(data.b,data.c));// 平常的函数嵌套调用 2*(3+4) = 14 var expression = "mul(a, add(b, c))";// 表达式,将被转换为函数 vm.ParsedValue = $parse(expression)(context, data); //执行上一句的函数 2*(3+4) = 14 } }());

完事  -。-   这两个破东西也是在google找了好多的资料,选了些较容易区分和说明具体意义的代码,写出来运行运行.... 遇到比较少见少用的api,真TM心累啊,资料难找,理解也不是这么容易...   然后写了好多代码运行,也跑了遍源码,终于是知道了大概是个啥意思了...

转载地址:http://srkba.baihongyu.com/

你可能感兴趣的文章
OpenID 关联认证提供 CoreOS dex
查看>>
《Node.js区块链开发》一2.2 信用,决定着利益转移的方向
查看>>
Speedy:来自京东的 Docker 镜像存储系统
查看>>
《动手玩转Arduino》——11.2 众多的Arduino板
查看>>
盗版用户无权指责微软“不负责任”
查看>>
Google 通知:Android 通知中心风格必须统一
查看>>
《动手玩转Arduino》——11.2 众多的Arduino板
查看>>
IBM Watson 进入癌症基因组分析市场
查看>>
在 Linux 中查看你的时区
查看>>
Linux集群和自动化维1.6 小结
查看>>
6月12日云栖精选夜读:【干货】iOS 11 短信拦截功能初探
查看>>
《OpenACC并行编程实战》—— 第1章 并行编程概览 1.1 加速器产品
查看>>
《编写可维护的JavaScript》——2.4 文档注释
查看>>
移动App性能测评与优化1.3.1 Dalvik Heap内部机制
查看>>
《C和C++代码精粹》——2.6 const指针
查看>>
《JavaScript机器人编程指南》——1.5 搭建开发环境
查看>>
《Google软件测试之道》—第2章2.4节与工具开发工程师Ted Mao的访谈
查看>>
《Python树莓派编程》——1.5 连接外围设备
查看>>
《嵌入式Linux与物联网软件开发——C语言内核深度解析》一1.3 位、字节、半字、字的概念和内存位宽...
查看>>
《ANTLR 4权威指南 》一3.2 测试生成的语法分析器
查看>>