2

可以说我有name = ko.observable('John')绑定到inputas 值。<button>Save</button>如果name更改,我需要显示(之前隐藏) 。因此,如果我编辑名称JohnJack然后保存按钮应该出现,如果编辑回John它应该再次隐藏。你有什么想法可以在这里应用什么样的绑定/扩展?
太谢谢了!

4

1 回答 1

3

您需要的称为脏跟踪。

有一个名为KoLite的 ko 插件,其中包含一个脏标志实现(您可以在本文中了解它的工作原理):

用法非常简单,您只需要将 obserables 传递给ko.DirtyFlag(这将返回计算的 observable)方法:

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>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

演示小提琴。

于 2012-11-10T13:05:08.853 回答