首页 > 其他 > 详细

$parse , $interpolate ,$complie

时间:2014-08-21 00:05:23      阅读:461      评论:0      收藏:0      [点我收藏+]

$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 = 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 = $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之后

 

$parse , $interpolate ,$complie,布布扣,bubuko.com

$parse , $interpolate ,$complie

原文:http://www.cnblogs.com/keatkeat/p/3925968.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!