精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Knockout應用開發指南之入門介紹

開發 前端
Knockout是一個輕量級的UI類庫,通過應用MVVM模式使JavaScript前端UI簡單化。Knockout是一個以數據模型(data model)為基礎的能夠幫助你創建富文本,響應顯示和編輯用戶界面的JavaScript類庫。任何時候如果你的UI需要自動更新(比如:更新依賴于用戶的行為或者外部數據源的改變),KO能夠很簡單的幫你實現并且很容易維護。

1 Knockout簡介 (Introduction)

Knockout是一個輕量級的UI類庫,通過應用MVVM模式使JavaScript前端UI簡單化。

Knockout有如下4大重要概念:

◆  聲明式綁定 (Declarative Bindings):使用簡明易讀的語法很容易地將模型(model)數據關聯到DOM元素上。

◆  UI界面自動刷新 (Automatic UI Refresh):當您的模型狀態(model state)改變時,您的UI界面將自動更新。

◆  依賴跟蹤 (Dependency Tracking):為轉變和聯合數據,在你的模型數據之間隱式建立關系。

◆  模板 (Templating):為您的模型數據快速編寫復雜的可嵌套的UI。

簡稱:KO

官方網站:http://knockoutjs.com

2 入門介紹 (Getting started)

2.1 KO工作原理及帶來的好處

Knockout是一個以數據模型(data model)為基礎的能夠幫助你創建富文本,響應顯示和編輯用戶界面的JavaScript類庫。任何時候如果你的UI需要自動更新(比如:更新依賴于用戶的行為或者外部數據源的改變),KO能夠很簡單的幫你實現并且很容易維護。

重要特性:

◆  優雅的依賴追蹤- 不管任何時候你的數據模型更新,都會自動更新相應的內容。

◆  聲明式綁定- 淺顯易懂的方式將你的用戶界面指定部分關聯到你的數據模型上。

◆  靈活全面的模板- 使用嵌套模板可以構建復雜的動態界面。

◆  輕易可擴展- 幾行代碼就可以實現自定義行為作為新的聲明式綁定。

額外的好處:

◆  純JavaScript類庫 – 兼容任何服務器端和客戶端技術

◆  可添加到Web程序最上部 – 不需要大的架構改變

◆  簡潔的 – Gzip之前大約25kb

◆  兼容任何主流瀏覽器 (IE 6+、Firefox 2+、Chrome、Safari、其它)

◆  Comprehensive suite of specifications (采用行為驅動開發) - 意味著在新的瀏覽器和平臺上可以很容易通過驗證。

開發人員如果用過Silverlight或者WPF可能會知道KO是MVVM模式的一個例子。如果熟悉 Ruby on Rails 或其它MVC技術可能會發現它是一個帶有聲明式語法的MVC實時form。換句話說,你可以把KO當成通過編輯JSON數據來制作UI用戶界面的一種方式… 不管它為你做什么

OK, 如何使用它?

簡單來說:聲明你的數據作為一個JavaScript 模型對象(model object),然后將DOM 元素或者模板(templates)綁定到它上面.

讓我們來看一個例子

想想在一個頁面上,航空旅客可以為他們的旅行升級高級食物套餐,當他們選擇一個套餐的時候,頁面立即顯示套餐的描述和價格。首先,聲明可用的套餐:

  1. var availableMeals = [  
  2.     { mealName: 'Standard', description: 'Dry crusts of bread', extraCost: 0 },  
  3.     { mealName: 'Premium', description: 'Fresh bread with cheese', extraCost: 9.95 },  
  4.     { mealName: 'Deluxe', description: 'Caviar and vintage Dr Pepper', extraCost: 18.50 }  
  5.   ]; 

如果想讓這3個選項顯示到頁面上,我們可以綁定一個下拉菜單(例如:<select>元素)到這個數據上。例如:

  1. <h3>Meal upgrades</h3> 
  2. <p>Make your flight more bearable by selecting a meal to match your social and economic status.</p> 
  3. Chosen meal: <select data-bind="options: availableMeals,  
  4.                                 optionsText: 'mealName'"></select> 

啟用Knockout并使你的綁定生效,在availableMeals變量聲明之后添加如下代碼:

  1. var viewModel = {  
  2.     /* we'll populate this in a moment */  
  3. };  
  4.  
  5. ko.applyBindings(viewModel); // Makes Knockout get to work  
  6. // 注意:ko. applyBindings需要在上述HTML之后應用才有效 

你可以在這個系列里將學習更多的view model 和 MVVM。現在你的頁面將render成如下的樣子:

 

 

響應選擇

下一步,聲明一個簡單的data model來描述旅客已經選擇的套餐,添加一個屬性到當前的view model上:

  1. var viewModel = {  
  2.     chosenMeal: ko.observable(availableMeals[0])  
  3. }; 

ko.observable是什么?它是KO里的一個基礎概念。UI可以監控(observe)它的值并且回應它的變化。這里我們設置chosenMeal是UI可以監控已經選擇的套餐,并初始化它,使用availableMeal里的***個值作為它的默認值(例如:Standard)。

讓我們將chosenMeal 關聯到下拉菜單上,僅僅是更新<select>元素,告訴它讓<select>元素的值讀取/寫入chosenMeal這個模型屬性:

  1. Chosen meal: <select data-bind="options: availableMeals,  
  2.                                 optionsText: 'mealName',  
  3.                                 value: chosenMeal"></select> 

理論上說,我們現在可以讀/寫chosenMeal 屬性了,但是我們不知道它的作用。讓我們來顯示已選擇套餐的描述和價格:

  1. <p> 
  2.     You've chosen:  
  3.     <b data-bind="text: chosenMeal().description"></b> 
  4.     (price: <span data-bind='text: chosenMeal().extraCost'></span>)  
  5. </p> 

于是,套餐信息和價格,將根據用戶選擇不同的套餐項而自動更新:

 

 

更多關于observables和dependency tracking的使用

***一件事:如果能將價格格式化成帶有貨幣符號的就好了,聲明一個JavaScript函數就可以實現了…

  1. function formatPrice(price) {  
  2.     return price == 0 ? "Free" : "$" + price.toFixed(2);  

… 然后更新綁定信息使用這個函數 …

  1. (price: <span data-bind='text: formatPrice(chosenMeal().extraCost)'></span>

… 界面顯示結果將變得好看多了:

 

 

Price的格式化展示了,你可以在你的綁定里寫任何JavaScript代碼,KO仍然能探測到你的綁定依賴代碼。這就展示了當你的model改變時,KO如何只進行局部更新而不用重新render整個頁面 – 僅僅是有依賴值改變的那部分。

鏈式的observables也是支持的(例如:總價依賴于價格和數量)。當鏈改變的時候,依賴的下游部分將會重新執行,同時所有相關的UI將自動更新。不需要在各個observables之間聲明關聯關系,KO框架會在運行時自動執行的。

你可以從 observables 和 observable arrays 獲取更多信息。上面的例子非常簡單,沒有覆蓋很多KO的功能。你可以獲取更多的內嵌的綁定和模板綁定。

KO和jQuery (或Prototype等)是競爭關系還是能一起使用?

所有人都喜歡jQuery! 它是一個在頁面里操作元素和事件的框架,非常出色并且易使用,在DOM操作上肯定使用jQuery,KO解決不同的問題。

如果頁面要求復雜,僅僅使用jQuery需要花費更多的代碼。 例如:一個表格里顯示一個列表,然后統計列表的數量,Add按鈕在數據行TR小于5調的時候啟用,否則就禁用。jQuery 沒有基本的數據模型的概念,所以需要獲取數據的數量(從table/div或者專門定義的CSS class),如果需要在某些SPAN里顯示數據的數量,當添加新數據的時候,你還要記得更新這個SPAN的text。當然,你還要判斷當總數>=5條的時候禁用Add按鈕。 然后,如果還要實現Delete功能的時候,你不得不指出哪一個DOM元素被點擊以后需要改變。

Knockout的實現有何不同?

使用KO非常簡單。將你的數據描繪成一個JavaScript數組對象myItems,然后使用模板(template)轉化這個數組到表格里(或者一組DIV)。不管什么時候數組改變, UI界面也會響應改變(不用指出如何插入新行<tr>或在哪里插入),剩余的工作就是同步了。例如:你可以聲明綁定如下一個SPAN顯示數據數量(可以放在頁面的任何地方,不一定非要在template里):

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

就是這些!你不需要寫代碼去更新它,它的更新依賴于數組myItems的改變。同樣, Add按鈕的啟用和禁用依賴于數組myItems的長度,如下:

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

之后,如果你要實現Delete功能,不必指出如何操作UI元素,只需要修改數據模型就可以了。

總結:KO沒有和jQuery或類似的DOM 操作API對抗競爭。KO提供了一個關聯數據模型和用戶界面的高級功能。KO本身不依賴jQuery,但是你可以一起同時使用jQuery, 生動平緩的UI改變需要真正使用jQuery。

2.2 下載安裝

Knockout的核心類庫是純JavaScript代碼,不依賴任何第三方的類庫。所以按照如下步驟即可添加KO到你的項目里:

下載Knockout類庫的***版本,在正式開發和產品使用中,請使用默認的壓縮版本(knockout-x.x.js)。

下載地址:https://github.com/SteveSanderson/knockout/downloads

Debug調試目的,可使用非壓縮版本(knockout-x.x.debug.js). 和壓縮版本同樣的功能,但是具有全變量名和注釋的可讀性源代碼,并且沒有隱藏內部的API。

在你的HTML頁面里使用<script>標簽引用Knockout類庫文件。

這就是你需要的一切…

 

開啟模板綁定

…除非你想使用模板綁定功能(您很有可能使用它,因為非常有用),那你需要再引用兩個JavaScript文件。 KO的默認模板引擎是依賴jQuery 的jquery.tmpl.js。所以你需要下載下面的2個文件并在引用KO之前引用:

jQuery 1.4.2 或更高版本

jquery-tmpl.js — 此版本 可以很容易使用,或者你訪問官方網站 查找***版本。

正確的引用順序:

  1. <script type='text/javascript' src='jquery-1.4.2.min.js'></script> 
  2. <script type='text/javascript' src='jquery-tmpl.js'></script> 
  3. <script type='text/javascript' src='knockout-1.2.1.js'></script> 

(當然,您要根據你的文件路徑累更新上面的文件路徑和文件名。)

原文:http://www.cnblogs.com/TomXu/archive/2011/11/21/2256749.html

【編輯推薦】

  1. 如何更好的面試JavaScript工程師
  2. JavaScript異步編程
  3. 16個優秀的JavaScript教程和庫推薦
  4. Web開發者必備的JavaScript單元測試工具
  5. 學習JavaScript的***方法
責任編輯:陳貽新 來源: 湯姆大叔的博客
相關推薦

2011-12-05 15:44:45

Knockout

2011-12-05 14:50:13

Knockout

2012-01-04 16:21:11

2011-11-29 16:56:30

Knockout

2011-11-30 16:29:41

2012-01-04 16:11:49

Knockout

2011-12-05 15:02:21

Knockout

2011-04-15 14:22:20

圖片操作UIBlackBerry

2011-08-02 17:58:09

iPhone開發 事件

2014-05-16 11:09:38

Handlebars模板引擎

2014-06-12 09:35:25

設備定向API移動開發

2014-09-18 09:27:32

AndroidTransition框

2011-04-18 11:00:34

使用音頻BlackBerry

2011-06-07 09:10:41

BlackBerry 開發

2022-03-15 08:00:00

Flutter開發工具

2022-11-04 14:58:59

應用開發鴻蒙

2011-04-15 15:16:28

使用圖像對象畫圖BlackBerry

2011-07-25 16:21:22

Sencha touc

2022-08-02 08:01:09

開發插件Chrome前端技術

2015-03-10 10:59:18

Node.js開發指南基礎介紹
點贊
收藏

51CTO技術棧公眾號

久久激情婷婷| 久久这里只精品| 国产精品成人99一区无码| 黄色电影免费在线看| 91精品国产一区二区在线观看| 国产麻豆视频精品| 精品网站999www| 99re在线国产| 国产精品69久久久久孕妇欧美| 免费看电影在线| 蜜桃久久久久久| 亚洲第一精品夜夜躁人人爽| 综合视频免费看| 国产免费av一区| 粉嫩久久久久久久极品| **欧美大码日韩| 国产精品视频免费在线观看| 丰满圆润老女人hd| 忘忧草在线影院两性视频| 国产乱码一区二区三区| 欧美孕妇与黑人孕交| 在线观看免费视频国产| 手机av免费在线| 国产麻豆一精品一av一免费 | 亚洲无吗在线| 日韩视频在线一区二区| 偷拍盗摄高潮叫床对白清晰| 中文字幕在线播放av| 国产精品一区二区av日韩在线| 五月激情六月综合| 国产日韩精品推荐| 日本少妇久久久| 青草久久视频| 一本色道亚洲精品aⅴ| 久久99欧美| 国产一区免费看| 日韩在线欧美| 制服丝袜av成人在线看| 天天爱天天做天天操| 免费在线毛片| 乱一区二区av| 欧美成人黄色小视频| 欧美性猛交xx| av电影免费在线看| 91亚洲精品久久久蜜桃网站 | 免费影视亚洲| 1024成人网| 亚洲美女网站18| 97国产成人无码精品久久久| 亚洲成人精选| 欧美成人免费网站| 蜜臀av无码一区二区三区| 午夜一区在线观看| 秋霞影院一区二区| 免费91在线视频| 五月天婷婷丁香网| 91精品导航| 欧美日韩亚洲激情| 亚洲欧美精品| 91啦中文在线| 国产激情视频一区二区在线观看| 久久免费少妇高潮久久精品99| 尤物网站在线观看| 哺乳挤奶一区二区三区免费看| 欧美日韩综合视频网址| 亚洲一区二区在线看| 好吊色视频一区二区| 日本视频在线一区| 国产精品久久久久久久久久久不卡| 欧美爱爱免费视频| 午夜欧洲一区| 欧美一区二区视频在线观看| 又粗又黑又大的吊av| 9色在线观看| 中文字幕精品在线不卡| 国产高清在线一区二区| 最近中文字幕免费观看| 激情欧美一区二区三区| 最好看的2019年中文视频| 蜜臀aⅴ国产精品久久久国产老师 性活交片大全免费看 | 国产在线一区二区| 69精品小视频| 成人自拍小视频| 一区二区在线| 一区二区三区久久精品| 亚洲成年人在线观看| 精品日产乱码久久久久久仙踪林| 欧美日韩一区二区三区高清| 日本网站免费在线观看| 三上悠亚一区二区| 亚洲国产欧美另类丝袜| 亚洲午夜激情| 中文av资源在线| 国产精品色眯眯| 精品国产一区二区三区四区vr | 国产精品久久久久久模特| 色小说视频一区| 美女的奶胸大爽爽大片| 日韩欧美三级| 色综合久久88色综合天天看泰| av永久免费观看| 丝袜美腿一区二区三区动态图| 亚洲区免费影片| 中文字幕一区二区久久人妻网站| 无人区乱码一区二区三区| 欧美日韩电影在线| 精品久久久噜噜噜噜久久图片| 国内高清免费在线视频| 一区二区三区在线视频观看58| 亚洲欧洲在线一区| 青春草在线免费视频| 日本大香伊一区二区三区| 欧美aⅴ在线观看| 热色播在线视频| 精品福利在线看| 一区二区在线免费看| 成人在线高清| 欧美日韩精品电影| 呦呦视频在线观看| 亚洲精品二区三区| 国产精国产精品| 欧美a视频在线观看| 午夜亚洲性色视频| 国产精品高清在线观看| 囯产精品一品二区三区| 国产精品国产三级国产三级人妇 | www.色欧美| 国内精品久久久久久久久电影网| 欧美国产日韩中文字幕在线| 放荡的美妇在线播放| 欧美一区高清| 久久久久久久久久久免费精品 | 久久精品亚洲欧美日韩精品中文字幕| 性色av一区二区三区免费| 91精品国产高潮对白| 久久99九九99精品| 亚洲一区国产精品| 国产刺激高潮av| 日韩美女视频一区二区| 一区二区成人网| 精品视频91| 亚洲第一精品夜夜躁人人躁| 欧美黑人精品一区二区不卡| 美日韩一级片在线观看| 青青影院一区二区三区四区| 五月香视频在线观看| 中文字幕亚洲成人| 午夜免费高清视频| 久久在线观看| 久久精品视频在线播放| 日韩精品一区二区三区国语自制| 国产一区二区三区av电影| 一区二区av| 亚洲男男av| 久久九九国产精品怡红院 | 中文字字幕码一二三区| 亚洲国产日本| 奇门遁甲1982国语版免费观看高清 | 色网站免费观看| www.一区二区| 亚洲精品在线观看免费| 日本另类视频| 亚洲第一偷拍网| 日韩女优在线观看| 精品一区二区在线看| 国产91av视频在线观看| 国产精品日韩精品在线播放| 精品视频在线播放| 国产精品视频123| 国产视频一区在线播放| 亚洲一区三区电影在线观看| 精品乱码一区二区三区四区| 日韩精品一区二区三区在线| 亚洲一区视频在线播放| 欧美精品九九| 国产精品永久在线| 日韩一级片免费在线观看| 国产精品视频免费| 手机在线国产视频| av资源久久| 97在线视频免费看| 男人天堂资源在线| 精品视频在线免费看| 国精品无码一区二区三区| 福利91精品一区二区三区| 视频一区视频二区视频三区视频四区国产| 午夜伦理大片视频在线观看| 亚洲成人av资源网| 日本一本在线观看| 99久久久无码国产精品| 妞干网在线免费视频| 国产乱人伦精品一区| 日韩av色综合| 亚洲人午夜射精精品日韩| 色就色 综合激情| 三上悠亚作品在线观看| 蜜臀久久99精品久久久久久9 | av无码一区二区三区| 欧美日韩国产探花| 久久免费99精品久久久久久| 日韩免费大片| 日韩亚洲精品电影| 免费在线观看av的网站| 一区二区三区四区在线| 天天躁日日躁aaaa视频| 国产一区二区精品久久| 女人另类性混交zo| 欧美日韩国产色综合一二三四| 日本一区二区不卡高清更新| 51社区在线成人免费视频| 国产精欧美一区二区三区| 岛国片av在线| 久久精品福利视频| 麻豆国产在线播放| 亚洲精品在线一区二区| 国产一级理论片| 国产另类ts人妖一区二区| 美女福利视频在线| 亚洲电影av| 久久久久久久免费视频| 精品国产18久久久久久二百| 青青草国产精品一区二区| 国产丝袜在线播放| 免费av在线一区| 欧美另类极品| 日韩午夜在线播放| 中文字幕乱码中文字幕| 黑人巨大精品欧美一区二区三区| 丰满少妇高潮久久三区| 亚洲欧洲韩国日本视频| 四虎国产精品成人免费入口| 97久久精品人人做人人爽 | 91原创在线视频| 日本人妻一区二区三区| 亚洲午夜一级| 18视频在线观看娇喘| 欧美成人精品一区二区三区在线看| 成人免费视频网址| 青草在线视频在线观看| 日韩中文在线中文网在线观看| 久久久久久久影视| 日韩精品视频在线免费观看| 在线观看污污网站| 偷拍日韩校园综合在线| 国产无遮挡裸体免费视频| 一区二区三区高清在线| 亚洲精品女人久久久| 成人午夜电影久久影院| 88av.com| 久久中文欧美| 成人午夜免费剧场| 天天操综合520| 国外成人免费视频| 农村少妇一区二区三区四区五区 | 国产精品天干天干在观线| 日本高清www| 久久久久久久尹人综合网亚洲| 久久综合色视频| 国产精品一二| 欧美精品第三页| 日韩高清欧美激情| 亚洲精品少妇一区二区| 婷婷综合电影| 免费99视频| 粉嫩av国产一区二区三区| 成人免费直播live| 无码国模国产在线观看| 国精产品一区二区| 亚洲精品456| 91香蕉国产在线观看| 亚洲精品一区| 国产精品久久久精品| 一区二区三区| 国产精品一区二区三区不卡| 欧美一级免费| 亚洲在线视频福利| 国产亚洲精品美女久久| 蜜桃91精品入口| 水蜜桃久久夜色精品一区| 日本免费黄色小视频 | 一区二区xxx| 国产一区二区三区黄视频 | 亚洲天堂久久久久| 欧美日韩国产专区| 99久久久无码国产精品免费蜜柚| 欧美日韩你懂的| 国产激情久久久久久熟女老人av| 日韩欧美一区二区在线| 中国一区二区视频| 日韩欧美中文一区| 婷婷亚洲一区二区三区| 精品国产伦一区二区三区观看体验| 天堂av中文字幕| 中文字幕亚洲专区| 国产h在线观看| 亚洲精品电影在线观看| 国产精品欧美久久久久天天影视| 在线亚洲精品福利网址导航| 亚洲综合一二三| 欧美无人高清视频在线观看| 在线观看日韩中文字幕| 欧美美女激情18p| 在线观看国产一区二区三区| 日韩欧美在线影院| 国产福利在线| 久久久久久久久久久免费精品| 黄色精品视频| 精品国产一区二区三区日日嗨| 91欧美日韩| 91av在线免费播放| 国产一区二区看久久| 亚洲午夜久久久久久久久红桃| 亚洲三级免费观看| 欧美成人免费观看视频| 色欲综合视频天天天| 亚洲av无码一区二区三区dv| 欧美成人a视频| 自拍视频在线免费观看| 97在线视频精品| 91成人福利| 日本免费黄色小视频 | www日本在线观看| 国产精品网站导航| 九九热在线免费观看| 同产精品九九九| 亚洲精品无amm毛片| 精品激情国产视频| 欧美大片1688网站| 欧美成人综合一区| 国产一区二区精品| 图片区偷拍区小说区| 亚洲色图欧美激情| 亚洲视频中文字幕在线观看| 亚洲欧洲激情在线| 小视频免费在线观看| 国产欧美一区二区三区不卡高清| 亚洲欧美偷拍自拍| 欧美一级小视频| 亚洲视频在线一区二区| 国产一区二区在线视频聊天| 伊人久久大香线蕉av一区二区| 国产高清不卡| 国产精品直播网红| 欧美少妇性xxxx| 欧美日韩视频免费| 亚洲一区欧美激情| 波多野结衣一二三区| 亚洲成人福利片| 日本人妻熟妇久久久久久| 久久久久久久影院| 国产精品欧美大片| 欧美日韩精品在线一区二区| 免费久久精品视频| eeuss中文字幕| 欧美人与禽zozo性伦| 欧美激情二区| 91久久久久久久一区二区| 亚洲a在线视频| 亚洲妇女无套内射精| 亚洲成年人影院| 日韩精品视频无播放器在线看| 久久久国产成人精品| 91精品在线免费视频| 国产一二三四区在线观看| 国产精品一区二区在线观看网站 | 亚洲精彩视频| 日本精品一二三| 疯狂欧美牲乱大交777| 狠狠v欧美ⅴ日韩v亚洲v大胸| 国产精品444| 97在线精品| 国产吃瓜黑料一区二区| 富二代精品短视频| av电影在线网| 97久久夜色精品国产九色| 夜色77av精品影院| 亚洲 欧美 日韩系列| 亚洲男人天堂av网| 久久这里只有精品9| 精品国内自产拍在线观看| 亚洲不卡在线| 99999精品视频| 成人性色生活片免费看爆迷你毛片| 日本一区二区三区免费视频| 亚洲欧美色婷婷| 日韩电影免费看| 水蜜桃亚洲一二三四在线| 国产麻豆精品一区二区| 国产一级黄色av| 91精品免费在线| 波多野结衣在线播放| 日韩中文字幕一区| 噜噜噜91成人网| 永久免费看片视频教学| 亚洲第一精品自拍| 色综合视频一区二区三区日韩 | 99在线播放| 欧美日韩无遮挡| 国产一区成人| www.xxxx日本|