欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

認識Knockout及如何使用Knockout綁定上下文

 更新時間:2015年12月25日 17:13:55   作者:藍天白云  
Knockout簡稱ko,是一個輕量級的javascript類庫,采用MVVM設(shè)計模式(即Model、view、viewModel),簡單優(yōu)雅的實現(xiàn)了雙向綁定,實時更新,幫助您使用干凈的數(shù)據(jù)模型來創(chuàng)建豐富的、響應(yīng)式的用戶界面

Knockout介紹

Knockout簡稱ko,是一個輕量級的javascript類庫,采用MVVM設(shè)計模式(即Model、view、viewModel),簡單優(yōu)雅的實現(xiàn)了雙向綁定,實時更新,幫助您使用干凈的數(shù)據(jù)模型來創(chuàng)建豐富的、響應(yīng)式的用戶界面。

Knockout有三大核心特性:

    1.優(yōu)雅的依賴跟蹤(Elegant dependency tracking):任何時候數(shù)據(jù)模型的變化都會自動更新相應(yīng)的UI部分;

    2.聲明式綁定(Declarative bindings) : 簡單的將UI和你的數(shù)據(jù)模型關(guān)聯(lián)起來,你就可以創(chuàng)建復(fù)雜的動態(tài)UI;

    3.高度可擴展性(Trivially extensible) : 只需幾行代碼實現(xiàn)一個自定義的行為來作為聲明式綁定;

其他優(yōu)點:

    1.純凈的javascript代碼;

    2.可以隨時添加到你現(xiàn)有的web應(yīng)用中;

    3.輕量級,GZIP后只有13K;

    4.能夠工作于幾乎所有主流瀏覽器((IE 6+, Firefox 2+, Chrome, Safari, Edge, others);

ko采用的是MVVM設(shè)計模式,即model view viewModel。

簡單的例子

There are <span data-bind="text: myItems().length"></span> items 

就是這么簡單,你不必寫代碼來更新text內(nèi)容,它會在數(shù)組長度改變時自動更新,與此類似,如果我們想利用數(shù)組長度控制按鈕的可用性僅僅需要:

<button data-bind="enable: myItems().length < 5">Add</button>

下面接著給大家介紹使用Knockout綁定上下文

Binding context

binding context是一個保存數(shù)據(jù)的對象,你可以在你的綁定中引用它。當(dāng)應(yīng)用綁定的時候,knockout自動創(chuàng)建和管理binding context的繼承關(guān)系。這種層次結(jié)構(gòu)的根引用你指定的viewModel參數(shù)(ko.applyBindings(viewModel))。

然后每次使用一個控制流如with或者foreach 來創(chuàng)建一個子節(jié)點binding context引用嵌套的viewModel data。

$parent

<h1 data-bind="text: name"></h1>
<div data-bind="with: manager">
 <!-- Now we're inside a nested binding context -->
 <span data-bind="text: name"></span> is the
 manager of <span data-bind="text: $parent.name"></span>
</div> 

$parents

這是一個數(shù)組,代表了所有的父節(jié)點view models

$parent[0] : 代表父節(jié)點;

$parent[1] : 代表祖父節(jié)點;

$parent[1] : 代表曾祖父節(jié)點;

.....以此類推

$root

它是root context的根節(jié)點視圖模型對象,一般是通過ko.applyBindings指定的,相當(dāng)于$parents[$parents.length - 1]。

$component

如果你在一個特定的組件模板的上下文中,$component指定的是那個component,它的指定組件相當(dāng)于$root,在嵌套的組件情況下,它代表了最鄰近的一個組件。

$data

它代表了當(dāng)前上下文中的viewModel對象,$data和$root是相當(dāng)?shù)摹T谇短椎腷inding context中,這個參數(shù)將設(shè)置到當(dāng)前的數(shù)據(jù)項。

$data是非常有用的,例如,當(dāng)你想引用viewModel本身而不是viewModel的屬性的時候。

<ul data-bind="foreach: ['cats', 'dogs', 'fish']">
 <li>The value is <span data-bind="text: $data"></span></li>
</ul> 
$index(僅在foreach binding中可用)

它是一個在foreach綁定中的數(shù)組的從0開始的索引條目。不想其他的context屬性,$index是observable的,即會隨著數(shù)組item的更新而更新。

$parentContext

指定了父節(jié)點級別的binding context對象,與$parent不同的是,它是在父節(jié)點中指定數(shù)據(jù)而不是binding context。

$rowData

它是在當(dāng)前上下文中,原viewModel的值,通常它相當(dāng)于$data,但是,如果viewModel被ko以observable來修飾,$data是unobservable的,而$rowData是observable的。

相關(guān)文章

  • 基于JavaScript實現(xiàn)數(shù)碼時鐘效果

    基于JavaScript實現(xiàn)數(shù)碼時鐘效果

    這篇文章主要為大家詳細介紹了基于JavaScript實現(xiàn)數(shù)碼時鐘效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • ASP中Sub和Function的區(qū)別說明

    ASP中Sub和Function的區(qū)別說明

    主要的區(qū)別是有返回值,一般sub是用來調(diào)用大量的內(nèi)容的時候用sub,對于需要計算并需要返回值的時候用function,多用function定義函數(shù)。
    2011-01-01
  • JavaScript截取字符串的Slice、Substring、Substr函數(shù)詳解和比較

    JavaScript截取字符串的Slice、Substring、Substr函數(shù)詳解和比較

    這篇文章主要介紹了JavaScript截取字符串的Slice、Substring、Substr函數(shù)詳解和比較,需要的朋友可以參考下
    2014-03-03
  • js 表格隔行顏色

    js 表格隔行顏色

    表格隔行顏色,就是通過判斷當(dāng)前表格的單數(shù)進行判斷。一般asp中應(yīng)用的比較廣泛。
    2009-12-12
  • js獲取當(dāng)前地址 JS獲取當(dāng)前URL的示例代碼

    js獲取當(dāng)前地址 JS獲取當(dāng)前URL的示例代碼

    本篇文章主要是對js獲取當(dāng)前地址 JS獲取當(dāng)前URL的示例代碼進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-02-02
  • e.target與e.currentTarget對象的使用區(qū)別詳解

    e.target與e.currentTarget對象的使用區(qū)別詳解

    這篇文章主要為大家介紹了e.target與e.currentTarget的使用區(qū)別示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • JavaScript實現(xiàn)世界各地時間顯示

    JavaScript實現(xiàn)世界各地時間顯示

    這篇文章主要為大家詳細介紹了javaScript實現(xiàn)世界各地時間顯示,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • JavaScript判斷當(dāng)前時間是在某個時間點之前/之后

    JavaScript判斷當(dāng)前時間是在某個時間點之前/之后

    本文主要介紹了JavaScript判斷當(dāng)前時間是在某個時間點之前/之后,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 詳解JS實現(xiàn)簡單的時分秒倒計時代碼

    詳解JS實現(xiàn)簡單的時分秒倒計時代碼

    這篇文章主要介紹了JS時分秒倒計時的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • JavaScript數(shù)組中相同的元素進行分組(數(shù)據(jù)聚合)groupBy函數(shù)詳解

    JavaScript數(shù)組中相同的元素進行分組(數(shù)據(jù)聚合)groupBy函數(shù)詳解

    今天在打算從js端時序數(shù)據(jù)庫TSDB中,按相同的類型的數(shù)據(jù)排在一起,并且取同一時間段最新的數(shù)據(jù),經(jīng)過查詢這種思想叫做數(shù)據(jù)聚合,就是返回的數(shù)據(jù)要根據(jù)一個屬性來做計算,這篇文章主要介紹了JavaScript數(shù)組中相同的元素進行分組(數(shù)據(jù)聚合)?groupBy函數(shù),需要的朋友可以參考下
    2023-12-12

最新評論