首页 > 代码库 > $parse , $interpolate ,$complie
$parse , $interpolate ,$complie
$parse 是angular 提供的javascript解析器 .
var getter = $parse(expression);
var setter = getter.assign;
controller("ctrl", ["$scope", "$parse", "$compile", "$interpolate", function ($scope, $parse, $compile, $interpolate) {
//read $scope.name = "hello"; var expression = "name + ‘ ‘ +((5+6) == (12-1))"; var getter = $parse(expression); var value =http://www.mamicode.com/ getter($scope); //hello true
//write
expression = "name";
var setter = getter.assign;
setter($scope, "1782");
$scope.name; //1782 }]);
有点像javascript eval 和 with 的结合。内部是通过复杂的正则实现的。
$parse 无法解析angular 的 {{}} 符合。
所以当我们需要解析如 {{name}} 时, 我们会用 $interpolate
$scope.name = "hello"; var expression = "{{name}}"; var value =http://www.mamicode.com/ $interpolate(expression)($scope); //没有setter的方法哦 console.log(value);
$compile 是用来处理html 节点的 . 要注意的是 $compile(‘str‘)($scope) = node; 这个node要在digest之后才会有scope value.
$scope.name = "hello" var link = $compile("<div>{{name}}</div>"); var node = link($scope); console.log(node[0].innerHTML); //{{name}} <--还没同步值 setTimeout(function () { console.log(node[0].innerHTML); //hello <--同步咯 }, 0); //推迟到$digest之后
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。