野兽的ng api学习 -- $interpolate 和 $parse
$interpolate
将一个字符串编译成一个插值函数。HTML编译服务使用这个服务完成数据绑定。
$interpolate带有一个可选的第四个参数,allOrNothing。如果allOrNothing为true,插值函数将会返回未定义除非所有嵌入表达式的计算结果不为undefined。
使用代码:
<div ng-app="Demo">
<div ng-controller="demoCtrl">
<input ng-model="text2" />
{{value}}
</div>
</div>
<script>
angular.module(‘Demo‘, [])
.controller("demoCtrl", ["$scope", "$interpolate", function ($scope, $interpolate) {
var obj = { text1: "Hello", text2: "World" };
$scope.text2 = "World";
$scope.$watch("text2", function (n,o) {
var interpolate = $interpolate("{{text1}} "+n);
$scope.value = interpolate(obj);
})
}])
</script>
$parse
将Angular表达式转换为函数。
使用:$parse(expression);
expression:被编译的表达式。
返回:表示表达式编译后的函数。function(context,locals)
context:对象,含有需要解析的语句中的表达式(通常是一个scope对象)。
locals:对象,局部变量的上下文对象,用于重写上下文中的值。
返回的函数含有一下属性:
literal:boolean,表达式的顶节点是否是一个javascript字面量。
constant:boolean, 表达式是否全部是由javascript的常量字面量组成。
assign:function(context,locals),可以用来在给定的上下文中修改表达式的值。
使用代码:
angular.module(‘Demo‘, [])
.controller("demoCtrl", ["$scope", "$parse", function ($scope, $parse) {
var obj = {
text: "World"
};
var parses = $parse("‘Hello ‘+ text");
var v = parses(obj);// Hello World
}])
这篇后续再做补充...