真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

angularjs表達式-Expression

    緊接上節(jié)談到再談angularjs DI(Dependency Injection),在這里介紹關于angularjs的表達式expression。expression指的是javascript的一小片段代碼,通常用于綁定(binding)例如:` expression `。在angularjs中是通過$parse service解析。

創(chuàng)新互聯(lián)從2013年創(chuàng)立,先為忻府等服務建站,忻府等地企業(yè),進行企業(yè)商務咨詢服務。為忻府企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。

    $parse用法: $parse(expression);

  1.      參數(shù):javascript代碼片段。
  2.      返回值:{function(context, locals)},表達式編譯結果:
    1. context:嵌入表達式執(zhí)行的作用于scope。
    2. locals:本地變量,常用于替換重寫context。
    3. 返回值同樣帶有assign屬性,允許為表達式賦值。

  下面的表達式在angularjs將都是合法的表達式:

  1. 1+2
  2. 3*10 | currency
  3. user.name

angularjs表達式vs. javascript表達式

    angularjs視圖表達式有點像javascript表達式,但是并不是利用javascript表達式eval()函數(shù)解析執(zhí)行的,與javascript表達式區(qū)別如下:

  1. 所有屬性都依賴于scope作用于。并不是javascript的全局作用于window。
  2. 表達式計算兼容處理null和undefined,而javascript則會拋出NullPointerExceptions異常。
  3. 沒有控制流程語句,條件,循環(huán)throw。
  4. 過濾器,多余angularjs表達式計算結果可以通過過濾器轉化格式,|表達式,如時間,貨幣,數(shù)字格式等。

   注: 對于angularjs表達式,可以采用$eval()方法解析執(zhí)行。

 

Demo

html:

 

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17. Expression:  
  18.  
  19.  
  20.  
  21. Evaluate 
  22.  
    •  
    •  
    •  
    •  
    • X ]  
    •  
    • `expr` =>  
    •  
    •  
    •  
     
  23.  
 
  •  
  •  
  •  
  •  
  •  
  • js:

    1. function Cntl2($scope) {  
    2.  
    3. var exprs = $scope.exprs = [];  
    4.  
    5. $scope.expr = '3*10|currency';  
    6.  
    7. $scope.addExp = function(expr) {  
    8.  
    9. exprs.push(expr);  
    10.  
    11. };  
    12.  

     

    $scope.removeExp = function(index) {

    exprs.splice(index, 1);

    };

    }

    jsfiddle演示:http://jsfiddle.net/whitewolf/yduLt/1/

    屬性執(zhí)行

         angularjs所有的表達式執(zhí)行都將依賴于一個作用于scope,不同于javascript的window全局作用域.如果你想引用全局作用于window,這必須依賴于上節(jié)的DI特性中引用$window service. 實例如下:

    html:

    1.  
    2.  
    3.  
    4.  
    5.  
    6.  
    7.  
    8.  
    9.  
    10.  
    11.  
    12.  
    13.  
    14.  
    15.  
    16.  
    17. Name:  
    18.  
    19. Greet 
    20.  
     
  •  
  •  
  •  
  •  
  •  
  • js:

    1. function Cntl1($window, $scope){  
    2.  
    3. $scope.name = 'World';  
    4.  
    5.    
    6.  
    7. $scope.greet = function() {  
    8.  
    9. ($window.mockWindow || $window).alert('Hello ' + $scope.name);  
    10.  
    11. }  
    12.  
    13. }  
    14.  

    jsfiddle演示:http://jsfiddle.net/whitewolf/MF2Ku/1/

    兼容執(zhí)行

        如上所述:angularjs表達式計算兼容處理null和undefined不會拋出任何異常,因為這將現(xiàn)實處理在view顯示,而javascript則會拋出NullPointerExceptions異常。例如表達式

    `a`.`b`.`c`,與其同等效果的javascript代碼將是{{((a||{}).b||{}).c}}。 無控制流程

        在angularjs表達式中將不存在條件,循環(huán),throw控制流程語句。因為angularjs作為mvc或者貼近pm模式要求表現(xiàn)層邏輯必須包含在controller中,而不是view,view應該足夠的被動。在表達式模式中都盡力將表現(xiàn)層不變的表現(xiàn)邏輯和多樣易變的UI view中抽離出來,便于更好的自動化測試構建等。

    過濾器(Filters)

        數(shù)據(jù)僅作為一種持久化存儲領域模型(表現(xiàn)層或者確切的成為視圖模型viewmodel),當展現(xiàn)給用戶的時候很多時候需要更友好的方式,比如時間,數(shù)字,貨幣格式本地化,

    例如: name | uppercase , 123 | number:2,3*10|currency。

       filters支持鏈式寫法,如何powershell或者其他操作系統(tǒng)外殼語言一樣的管道式模型,形如 value | filter1 | filter2。

     

       其他資源可參考本博客中其他angularjs隨筆或者angularjs官方文檔http://angularjs.org/。


    標題名稱:angularjs表達式-Expression
    本文路徑:http://weahome.cn/article/jgspis.html

    其他資訊

    在線咨詢

    微信咨詢

    電話咨詢

    028-86922220(工作日)

    18980820575(7×24)

    提交需求

    返回頂部