-
大小: 0.04M文件類型: .zip金幣: 1下載: 0 次發布日期: 2021-03-11
- 語言: JavaScript
- 標簽: knockout??
資源簡介
入門
簡介
Knockout有如下4大重要概念:
- 聲明式綁定 (Declarative Bindings):使用簡明易讀的語法很容易地將模型(model) 數據關聯到DOM元素上。
- UI界面自動刷新 (Automatic UI Refresh):當您的模型狀態(model state)改變時,您的UI界面將自動更新。
- 依賴跟蹤 (Dependency Tracking):為轉變和聯合數據,在你的模型數據之間隱式建立關系。
- 模板 (Templating):為您的模型數據快速編寫復雜的可嵌套的UI。
好處
重要特性:
- 優雅的依賴追蹤- 不管任何時候你的數據模型更新,都會自動更新相應的內容。
- 聲明式綁定- 淺顯易懂的方式將你的用戶界面指定部分關聯到你的數據模型上。
- 靈活全面的模板- 使用嵌套模板可以構建復雜的動態界面。
- 輕易可擴展- 幾行代碼就可以實現自定義行為作為新的聲明式綁定。 額外的好處:
- 純JavaScript類庫 – 兼容任何服務器端和客戶端技術
- 可添加到Web程序最上部 – 不需要大的架構改變
- 簡潔的 – Gzip之前大約25kb
- 兼容任何主流瀏覽器 (IE 6 、Firefox 2 、Chrome、Safari、其它)
- Comprehensive suite of specifications (采用行為驅動開發) 意味著在新的瀏覽器和平臺上可以很容易通過驗證。
Knockout綁定語法
visible 綁定
當參數設置為一個假值時(例如:布爾值false, 數字值0, 或者null, 或者undefined) ,該綁定將設置該元素的style.display值為none,讓元素隱藏。它的優先級高于你在CSS里定義的任何display樣式。
當參數設置為一個真值時(例如:布爾值true,或者非空non-null的對象或者數組) ,該綁定會刪除該元素的style.display值,讓元素可見。然后你在CSS里自定義的display樣式將會自動生效。
如果參數是監控屬性observable的,那元素的visible狀態將根據參數值的變化而變化,如果不是,那元素的visible狀態將只設置一次并且以后不在更新。 注:使用函數或者表達式來控制元素的可見性
text 綁定
KO將參數值會設置在元素的innerText (IE)或textContent(Firefox和其它相似瀏覽器)屬性上。原來的文本將會被覆蓋。
如果參數是監控屬性observable的,那元素的text文本將根據參數值的變化而更新,如果不是,那元素的text文本將只設置一次并且以后不在更新。
如果你傳的不是數字或者字符串(例如一個對象或者數組),那顯示的文本將是yourParameter.toString()的等價內容。(object)
注1:使用函數或者表達式來決定text值 如果你想讓你的text更可控,那選擇是創建一個依賴監控屬性(dependent observable), 然后在它的執行函數里編碼,決定應該顯示什么樣的text文本。 注2:關于HTML encoding 設置元素的innerText或textContent (而不是innerHTML) 關于IE 6的白空格whitespace Welcome, <span data-bind="text: userName"></span> to our web site.->Welcome, <span data-bind="text: userName"> </span> to our web site.
html 綁定
html綁定到DOM元素上,使得該元素顯示的HTML值為你綁定的參數。如果在你的view model里聲明HTML標記并且render的話,那非常有用。 KO設置該參數值到元素的innerHTML屬性上,元素之前的內容將被覆蓋。
css 綁定
該參數是一個JavaScript對象,屬性是你的CSS class名稱,值是比較用的true或false,用來決定是否應該使用這個CSS class。 非布爾值會被解析成布爾值。例如, 0和null被解析成false,21和非null對象被解析成true。
應用的CSS class的名字不是合法的JavaScript變量命名 如果你想使用my-class 在my-class兩邊加引號作為一個字符串使用
style 綁定
style綁定是添加或刪除一個或多個DOM元素上的style值 該參數是一個JavaScript對象,屬性是你的style的名稱,值是該style需要應用的值。 你可以一次設置多個style值
應用的style的名字不是合法的JavaScript變量命名 錯誤: { font-weight: someValue }; 正確: { fontWeight: someValue }
錯誤: { text-decoration: someValue }; 正確: { textDecoration: someValue }
attr 綁定
attr 綁定提供了一種方式可以設置DOM元素的任何屬性值 該參數是一個JavaScript對象,屬性是你的attribute名稱,值是該attribute需要 應用的值。 應用的屬性名字不是合法的JavaScript變量命名 如果你要用的屬性名稱是data-something的話 解決方案是:在data-something兩邊加引號作為一個字符串使用
click 綁定
click綁定在DOM元素上添加事件句柄以便元素被點擊的時候執行定義的JavaScript 函數 注1:傳參數給你的click 句柄
<button data-bind="click: function() { viewModel.myFunction(1, 2) }"> Click me </button>
注2:訪問事件源對象 myFunction: function (event) 如果你需要的話,可以使用匿名函數的第一個參數傳進去,然后在里面調用: 注3: 允許執行默認事件 默認情況下,Knockout會阻止冒泡,防止默認的事件繼續執行。例如,如果你點擊一個a連接,在執行完自定義事件時它不會連接到href地址。這特別有用是因為你的自定義事件主要就是操作你的view model,而不是連接到另外一個頁面。
當然,如果你想讓默認的事件繼續執行,你可以在你click的自定義函數里返回true。 注4:控制this句柄 注5:防止事件冒泡 clickBubble 可以通過額外的綁定clickBubble來禁止冒泡
event 綁定
大部分情況下是用在keypress,mouseover和mouseout上。
View model上的函數在用的時候有一點點特殊,就是不需要引用對象的,直接引用函數本身就行了,比如直接寫event: { mouseover: enableDetails } 就可以了,而無需寫成: event: { mouseover: viewModel.enableDetails } (盡管是合法的)。
submit 綁定
瀏覽器會執行你定義的綁定函數而不會提交這個form表單到服務器上??梢院芎玫亟忉屵@個,使用submit綁定就是為了處理view model的自定義函數的,而不是再使用普通的HTML form表單。如果你要繼續執行默認的HTML form表單操作,你可以在你的submit句柄里返回true。
enable 綁定
enable綁定使DOM元素只有在參數值為 true的時候才enabled。在form表單元素input,select,和textarea上非常有用。 非布爾值會被解析成布爾值。例如0和null被解析成false,21和非null對象被解析給true。
disable 綁定
disable綁定使DOM元素只有在參數值為 true的時候才disabled。在form表單元素input,select,和textarea上非常有用。
disable綁定和enable綁定正好相反,詳情請參考enable綁定。
value 綁定
當用戶編輯表單控件的時候, view model對應的屬性值會自動更新。同樣,當你更新view model屬性的時候,相對應的元素值在頁面上也會自動更新。
其它參數 valueUpdate 如果你使用valueUpdate參數,那就是意味著KO將使用自定義的事件而不是默認的離開焦點事件。下面是一些最常用的選項: change(默認值) - 當失去焦點的時候更新view model的值,或者是 keyup – 當用戶敲完一個字符以后立即更新view model。 keypress – 當用戶正在敲一個字符但沒有釋放鍵盤的時候就立即更新view model。不像 keyup,這個更新和keydown是一樣的。 afterkeydown – 當用戶開始輸入字符的時候就更新view model。主要是捕獲瀏覽器的keydown事件或異步handle事件。 checked 綁定 checked綁定是關聯到checkable的form表單控件到view model上 - 例如checkbox()或者radio button() 。當用戶check關聯的form表單控件的時候,view model對應的值也會自動更新,相反,如果view model的值改變了,那控件元素的check/uncheck狀態也會跟著改變。
options 綁定
options綁定控制什么樣的options在drop-down列表里(例如:)或者 multi-select 列表里 (例如:)顯示。此綁定不能用于之外的元素。關聯的數據應是數組(或者是observable數組),會遍歷顯示數組里的所有的項。 optionsCaption值是字符串型,作為默認項顯示 KO會在所有選項上加上這一個項,并且設置value值為undefined。所以,如果myChosenValue被設置為undefined(默認是observable的),那么上述的第一個項就會被選中。 optionsText列表的text來顯示 optionsValue該的value值 selectedOptions
selectedOptions 綁定
selectedOptions綁定用于控制multi-select列表已經被選擇的元素,用在使用options綁定的元素上。 uniqueName 綁定 uniqueName綁定確保所綁定的元素有一個非空的name屬性。如果該元素沒有name屬性,那綁定會給它設置一個unique的字符串值作為name屬性。 tips 循環嵌套 對象用observableArray監視
代碼片段和文件信息
-----------?---------??----------?-----??----
?????目錄???????????0??2016-07-04?15:06??knockout-master\
?????文件??????????48??2016-07-04?15:06??knockout-master\.gitignore
?????目錄???????????0??2016-07-04?15:06??knockout-master\app\
?????文件??????????42??2016-07-04?15:06??knockout-master\app\___________________build.cmd
?????文件??????????37??2016-07-04?15:06??knockout-master\app\___________________pre.cmd
?????文件??????????94??2016-07-04?15:06??knockout-master\app\___________________test.cmd
?????文件????????3414??2016-07-04?15:06??knockout-master\app\fis-conf.js
?????目錄???????????0??2016-07-04?15:06??knockout-master\app\js\
?????目錄???????????0??2016-07-04?15:06??knockout-master\app\js\lib\
?????文件???????59822??2016-07-04?15:06??knockout-master\app\js\lib\knockout-3.4.0.js
?????文件????????1653??2016-07-04?15:06??knockout-master\app\knockout_1.0.html
?????文件????????1031??2016-07-04?15:06??knockout-master\app\knockout_2.0.html
?????文件?????????854??2016-07-04?15:06??knockout-master\app\ko_attr.html
?????文件????????1891??2016-07-04?15:06??knockout-master\app\ko_check.html
?????文件????????1687??2016-07-04?15:06??knockout-master\app\ko_click.html
?????文件?????????955??2016-07-04?15:06??knockout-master\app\ko_css.html
?????文件?????????973??2016-07-04?15:06??knockout-master\app\ko_enable.html
?????文件????????1108??2016-07-04?15:06??knockout-master\app\ko_event.html
?????文件?????????805??2016-07-04?15:06??knockout-master\app\ko_html.html
?????文件????????1365??2016-07-04?15:06??knockout-master\app\ko_ob
?????文件????????2292??2016-07-04?15:06??knockout-master\app\ko_options.html
?????文件????????1694??2016-07-04?15:06??knockout-master\app\ko_selectedOptions.html
?????文件????????1001??2016-07-04?15:06??knockout-master\app\ko_st
?????文件?????????915??2016-07-04?15:06??knockout-master\app\ko_submit.html
?????文件????????1426??2016-07-04?15:06??knockout-master\app\ko_text.html
?????文件?????????820??2016-07-04?15:06??knockout-master\app\ko_uniqueName.html
?????文件????????1195??2016-07-04?15:06??knockout-master\app\ko_value.html
?????文件????????1447??2016-07-04?15:06??knockout-master\app\ko_visible.html
?????文件????????9802??2016-07-04?15:06??knockout-master\readme.md
- 上一篇:jquery 雙日歷插件
- 下一篇:cordova前端調用列
評論
共有 條評論