假设我name = ko.observable('John')
与input
绑定为值。如果<button>Save</button>
被更改,我需要显示(之前隐藏)name
。因此,如果我将名称从John
编辑为Jack
,则应显示保存按钮,如果再次编辑回John
,则应再次隐藏。您对此处可以应用何种类型的绑定/扩展有任何想法吗?
非常感谢!
答案 0 :(得分:3)
您需要的是脏跟踪。
有一个名为KoLite的ko插件,其中包含脏标志实现(您可以在this article中了解它的工作原理):
用法非常简单,只需要将你的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>