使用Knockout的注意點

2021-06-23 00:20:50 字數 813 閱讀 1507

1.值更改觸發時間

更改view後,焦點離開當前dom元素,view-model的值就改變。你可以設定valueupdate: "afterkeydown"使得view值改變,view-model值立馬改變(類似於onkeyup事件)。

更改view-model後,view的值立馬改變。

2.注意引用傳遞和值傳遞

值傳遞,最常見的就是你model型別是string和number,於是你改了model的值,view-model不變。

引用傳遞,最常見的就是array型別,你的model型別array資料,shift()了,你的view-model改變,你的view也改變了。

3.select元素的單擊事件

select元素,你繫結了click事件,其實是雙擊事件,它的單擊事件是change。

4.foreach繫結

一,要求的陣列格式是[,] ,這可能與你資料庫儲存的陣列格式不同。於是,你需要個轉化函式。

二,如果你想繫結[value1,value2,value3]這種陣列格式,要用$data。但是,這樣只能顯示資料,你在view裡修改了資料,不會影響到view-model,因為這是值傳遞。

三,$parent概念,當前物件所在集合了,經常用於remove。$root概念,就是集合a包集合b包集合c,集合c的$root就是集合a,集合c的$parent就是集合b。

5.with繫結

foreach繫結的是陣列,with繫結的則是物件。

6.自定義繫結

這下你牛b了,value繫結,text繫結都只是knockout自帶的,你也寫出yourname繫結。

使用Knockout的注意點

1.值更改觸發時間 更改view後,焦點離開當前dom元素,view model的值就改變。你可以設定valueupdate afterkeydown 使得view值改變,view model值立馬改變 類似於onkeyup事件 更改view model後,view的值立馬改變。2.注意引用傳遞和值...

goto 的使用注意點

使用goto不能跳過變數得初始化 例子 goto test int i string str test 為什麼這裡通不過編譯呢?把string str 這一句拿到goto之前就可以了?為什麼後面的int i 這一句不需要拿到goto之前呢?解答 在c primer中倒是提到,goto 不能向前跳過變...

使用printk的注意點

核心開發中,使用printk十分常見,但是也要注意,一次隊友在開發中,想要列印乙個大緩衝區的資料,就用printk列印,但是只能列印前約1k的資料,後來發現printk的實現中,臨時緩衝區確實有log line max限制,現在簡單總結下注意點 1.printk的實現很低效,不要在核心大量列印,尤其...