我正在用敲除邮筒标记脏旗。代码如下所示:
var ProfileModel = function() {
this.nickName = ko.observable("name1").publishOn("dirty", true);
this.emailAddress = ko.observable("email1").publishOn("dirty", true);
};
ko.postbox.subscribe("dirty", function(newValue) {
// enable Save button
}, this);
nickName和emailAddress绑定到输入框。
<div id="profile">
<input data-bind="value: nickName" /> </label>
<input data-bind="value: emailAddress" /></label>
</div>
重新创建问题的步骤:
dirty
并启用保存按钮。dirty
并不是以某种方式提出的。用户无法保存更改。dirty
并启用保存按钮。您可以查看小提琴以查看它的运行情况。在jsfiddle示例中没有保存按钮,但只需尝试删除nickName的内容,然后删除emailAddress。您将看到删除emailAddress不引发dirty
事件。
这个已知的臭虫在淘汰机邮箱里吗?在淘汰赛中有更好的方法来检查污秽吗?
发布于 2015-02-03 02:49:38
默认情况下,publishOn
功能的knockout-postbox
不会再次发布最新的值。在您的示例中,您将发布一个空字符串表示“脏”(空昵称),然后再发布一个空字符串(空电子邮件)。
publishOn
确实支持传递您自己的等式比较器。在您的示例中,您可以传递一个始终返回false
的函数。
例如,类似于:
var alwaysPublish = function() { return false; }
var ProfileModel = function() {
this.nickName = ko.observable("Ryan").publishOn("dirty", true, alwaysPublish);
this.emailAddress = ko.observable("ryan@knockmeout.net").publishOn("dirty", true, alwaysPublish);
this.log = ko.observableArray();
};
这里有一个小提琴:http://jsfiddle.net/rniemeyer/qmbwhk8a/
还可以通过设置ko.postbox.defaultComparer
全局重写比较函数。
https://stackoverflow.com/questions/28220595
复制相似问题