2012-11-10 45 views
2

可以說我有name = ko.observable('John')作爲值綁定到input。如果name被更改,我需要顯示(隱藏之前)<button>Save</button>。所以如果我編輯名稱從JohnJack然後保存按鈕應該出現,如果編輯回John它應該再次隱藏。你有什麼想法可以在這裏適用什麼樣的綁定/擴展?
非常感謝!已更改反應值

回答

3

你需要什麼叫做髒跟蹤。

有劫插件叫做KoLite其中包含一個骯髒的標誌實現(你可以看到它是如何工作的this article):

的使用非常簡單,你只需要你的obserables傳遞到ko.DirtyFlag(此將返回計算觀察到的)方法:

var ViewModel = function() { 
    var self = this; 
    self.name = ko.observable('John'); 
    self.dirtyFlag = new ko.DirtyFlag(self.name); 
} 

而且在你看來,你可以綁定到isDirty財產上的dirtyFlag

<input type="text" data-bind="value: name, valueUpdate: 'keyup'"/> 
<div data-bind="if: dirtyFlag().isDirty"> 
    <button>Save</button> 
</div>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

Demo fiddle.