反应值已更改

时间:2012-11-10 12:53:14

标签: knockout.js kolite

假设我name = ko.observable('John')input绑定为值。如果<button>Save</button>被更改,我需要显示(之前隐藏)name。因此,如果我将名称从John编辑为Jack,则应显示保存按钮,如果再次编辑回John,则应再次隐藏。您对此处可以应用何种类型的绑定/扩展有任何想法吗? 非常感谢!

1 个答案:

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

Demo fiddle.