AngularJS解決ng介面長運算式(ui-set)的方法分析_AngularJS

來源:互聯網
上載者:User

本文執行個體講述了AngularJS解決ng介面長運算式(ui-set)的方法。分享給大家供大家參考,具體如下:

本文來自網友sun shine的問題,問題如下:

    您好, 我想求教一個問題.
    在$scope中我的對象名字寫的特別深, 在 html中我又多次用到了同一個對象, 對不對在 html中讓它綁定到一個臨時變數呢?
    比如:
    $scope.this.is.a.very.deep.obj = {
    'name': 'xxx',
    'state': 'active'};

    在 模板中,

    {{this.is.a.very.deep.obj.name}}
    {{this.is.a.very.deep.obj.state}}
    類似於這種, 我能否把 this.is.a.very.deep.obj 預先賦給一個臨時的變數, 然後在 兩個 span中只需 o.name, o.state 就行了呢? 我覺得這樣解析起來是不是快一點.

    但是我試了, 並沒有成功. 求指點.
    先謝了.

在這裡首先需要說明的是ng介面的所有引用都需要在$scope這個viewmodel(ui和view的膠水層),所以如果我們希望能夠把運算式變得更可讀,更友好,那麼我們就必須在$scope上建立這個變數。

再則對於ng其使用使用的一堆的$watch,實現髒檢查,如果你理解這些了,那麼我們就可以很容易的實現一套如spring的

<c:set var="xxx" expression="xxx" />

的tag.

對於實現這類tag,我們最好的方式則是利用ng的directive來實現,代碼如下:

angular.module("greengerong.ui.tag", []) .directive("uiSet", [  function() {   return {    restrict: "EA",    link: function(scope, elm, iAttrs) {     scope.$watch(iAttrs.expression, function(val) {      scope[iAttrs.       var] = val;      var apply = !scope.$$phase ? scope.$apply : angular.noop;      apply();     });    }   };  }]);

希望本文所述對大家AngularJS程式設計有所協助。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.