我有以下型號:如何排除Knockoutjs toJS()某些性質
var model = {
A: 'One',
B: 'Two',
C: 'Three'
};
我結合各種UI元素,以這些領域,它的偉大工程。不過,我轉換模型回JavaScript對象,所以我可以保存到服務器的任何變化:
var goingToServer = ko.toJS(model);
goingToServer
將包括性質A,B和C.然而,假設屬性C是數據的大塊那永遠不會改變。我想避免將其發送回服務器。
有沒有辦法讓toJS()
只有在將模型轉換回JavaScript對象時包含一組預定義的字段?
我一直在調查的一件事是Knockout Mapping plugin。它有一個叫做設置包括其被記錄爲,例如:
當轉換視圖模型回JS對象,默認情況下 映射插件將僅包含屬於你的 原始視圖模型的一部分屬性,除非它還包含 淘汰賽生成的_destroy屬性,即使它不是您原始對象的一部分。但是,您可以選擇自定義這個數組:
但是,它出現在一個include
陣列的['A', 'B']
作爲證明這個插件不起作用,因爲ko.mapping.toJS()
仍然將包括A,B和C,即使我通過。我猜這個功能的目的是包括額外的字段,這些字段不在原始模型中。
當將模型轉換回JavaScript對象時,有沒有辦法排除某些屬性,做了一些hacky之類的事情,比如生成對象並手動刪除我不想在發送到服務器之前的屬性?
那是不行的,因爲那麼你就不能綁定到它。 – 2013-02-20 19:47:50
你試過了嗎?由於文檔沒有提到在返回JS對象時是否可以使用忽略。 – 2013-02-20 20:02:25
是的,我剛試過。當我忽略字段Notes時,當我調用applyBindings時,我立即發現在模型中找不到Notes字段。 – 2013-02-20 20:04:24