$parse , $interpolate ,$complie

來源:互聯網
上載者:User

標籤:style   blog   color   java   io   ar   div   cti   

$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之後

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.