1.官方網站:knockoutjs.com
2.要dom樹加載完畢才能綁定數據
3.ui能實時更新,使用了ko的一個自定義屬性:data-bind
4.可以對viewmodel中的屬性添加subscibe訂閱,可指定注冊的事件
也可以用dispose方法取消
5.Model-View-View Model (MVVM) 是一種創建用戶界面的設計模式。 描述的是如何將復雜的UI用戶界面分成3個部分:
- model: 你程序里存儲的數據。這個數據包括對象和業務操作(例如:銀子賬戶可以完成轉賬功能),並且獨立於任何UI。使用KO的時候,通常說是向服務器調用Ajax讀寫這個存儲的模型數據。
- view model: 在UI上,純code描述的數據以及操作。例如,如果你實現列表編輯,你的view model應該是一個包含列表項items的對象和暴露的add/remove列表項(item)的操作方法。
注意這不是UI本身:它不包含任何按鈕的概念或者顯示風格。它也不是持續數據模型 – 包含用戶正在使用的未保存數據。使用KO的時候,你的view models是不包含任何HTML知識的純JavaScript 對象。保持view model抽象可以保持簡單,以便你能管理更復雜的行為。
- view: 一個可見的,交互式的,表示view model狀態的UI。從view model顯示數據,發送命令到view model(例如:當用戶click按鈕的時候),任何view model狀態改變的時候更新。
使用KO的時候,你的view就是你帶有綁定信息的HTML文檔,這些聲明式的綁定管理到你的view model上。或者你可以使用模板從你的view model獲取數據生成HTML。
6.添加依賴監控屬性(dependentobservarale或computed)的時候要指定作用域,而且可以為它們指定讀寫方法
7.依賴跟蹤的原理:
- 當你聲明一個依賴監控屬性的時候,KO會立即調用執行函數並且獲取初始化值。
- 當你的執行函數運行的時候,KO會把所有需要依賴的依賴屬性(或者監控依賴屬性)都記錄到一個Log列表里。
- 執行函數結束以后,KO會向所有Log里需要依賴到的對象進行訂閱。訂閱的callback函數是重新運行你的執行函數。然后回頭重新執行上面的第一步操作(並且注銷不再使用的訂閱)。
- 最后KO會通知上游所有訂閱它的訂閱者,告訴它們我已經設置了新值。