日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

JavaScript實(shí)現(xiàn)的MVVM框架Knockoutjs使用入門

 ThinkTank_引擎 2014-03-15

 Knockoutjs是一個(gè)JavaScript實(shí)現(xiàn)的MVVM框架。主要有如下幾個(gè)功能:

1. Declarative bindings

2. Observables and dependency tracking

3. Templating

  1. 它對(duì)于分離前臺(tái)的業(yè)務(wù)邏輯和視圖簡(jiǎn)化數(shù)據(jù)綁定過(guò)程有顯著的作用。閑言少敘,直接看例子,如何下載也不說(shuō)了,如果用VS開(kāi)發(fā)的話用Nuget就可以一鍵搞定。
  2. 1. 基本綁定和依賴跟蹤

首先需要定義一個(gè)ViewModel:

  1. <script type="text/javascript"> 
  2.     function ViewModel() { 
  3.         this.firstName = "Zixin"; 
  4.         this.lastName = "Yin"; 
  5.     } 
  6. </script> 

然后是一個(gè)用來(lái)顯示這個(gè)ViewModel的View:

  1. <div> 
  2.     <p data-bind="text: firstName"></p> 
  3.     <p data-bind="text: firstName"></p> 
  4.     <input data-bind="value: firstName"/>  
  5.     <input data-bind="value: lastName"/>  
  6. </div> 

從這個(gè)view中可以看到聲明式綁定的含義,只需要在標(biāo)簽上使用data-bind屬性,就可以將數(shù)據(jù)的值綁定到相應(yīng)的地方。有了View和ViewModel還需要代碼將這兩者關(guān)聯(lián)起來(lái):

  1. ko.applyBindings(new ViewModel()); 

將他們放到一起,注意,applyBinding那代碼必須在頁(yè)面全部加載完之后執(zhí)行。頁(yè)面顯示為:

JavaScript實(shí)現(xiàn)的MVVM框架Knockoutjs使用入門_www.fengfly.com

下面再看observables,這個(gè)功能不是與生俱來(lái)的,必須要把View Model設(shè)置為observable,方法如下:

  1. function ViewModel() { 
  2.      this.firstName = ko.observable("Zixin"); 
  3.      this.lastName = ko.observable("Yin"); 
  4.  } 

其他都不需要改變,這時(shí)候,如果改變輸入框中的值,當(dāng)焦點(diǎn)離開(kāi)的時(shí)候,可以發(fā)現(xiàn)p中的值也跟著改變了:

JavaScript實(shí)現(xiàn)的MVVM框架Knockoutjs使用入門_www.fengfly.com

下面再看dependency tracking,也就是如果一個(gè)值依賴多各值,其中任何一個(gè)值發(fā)生變化,它都會(huì)自動(dòng)發(fā)生變化. 這是通過(guò)computed方法實(shí)現(xiàn)的,代碼如下:

  1. function ViewModel() { 
  2.      this.firstName = ko.observable("Zixin"); 
  3.      this.lastName = ko.observable("Yin"); 
  4.      this.fullName = ko.computed(function () { return this.lastName() + " " + this.firstName(); },this); 
  5.  }  

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多