9
我正在使用knockoutjs與受保護的observable和我有複選框的問題。一個受保護的觀察對象的實現可以在here找到,但是我看到有幾個非常相似。如何使用複選框使用knockoutjs保護的observable?
演示我的問題的jsFiddle可以找到here。這是小提琴的一部分。
var ViewModel = function() {
var self = this;
self.protectedBool = ko.protectedObservable(true);
self.commit = function(){
ko.commitProtectedObservables(self);
};
self.rollback = function() {
ko.rollbackProtectedObservables(self);
};
};
$(function() {
ko.applyBindings(new ViewModel());
});
要複製,請執行下列操作:
- 運行小提琴(默認值複選框爲true)
- 取消選中該複選框
- 點擊 「提交」
- 注意該值現在顯示爲假(這是正確的行爲)
- 再次運行小提琴(該複選框的默認值爲true)
- 取消選中複選框,然後立即檢查其
- 點擊「提交」
- 你會看到該值將被設置爲即使當你點擊它選中虛假/取消選中(點擊「提交」之前)「提交」。
「寫」事件中觀察到計算的protectedObservable定義中不不被解僱你改變複選框,因此當值COMMITED,它犯了不正確的值的第二次。
另請注意,protectedObservable完美適用於字符串。任何指導將不勝感激。
我沒有正確的答案。所以我只是發表這個非常hacky的解決方法作爲評論:http://jsfiddle.net/CyHyW/ – nemesv
優秀!感謝您的迴應! – rhoadsce
'protectedObservable'的實現非常舊。我想它只適用於老版本的KO(<2)。對於新的KO,請參閱由同一作者(Ryan Niemeyer)實施的編輯器模式 - http://www.knockmeout.net/2013/01/simple-editor-pattern-knockout-js.html –