有时候我们需要使用notifySubscribers来强制执行一个observable的子类,你可以将一个param传递给notifySubscribers,但问题是传递的param既不会改变observable的值,也不会传递给它。 subriber,那么为什么使用?我在一些Knockout文档中看到,例如,在this one中传递了一个参数。这是一个jsfiddle code snippet,它验证了param不在任何地方使用的事实。我错过了什么,或者这个参数确实毫无意义?
jsfiddle中的代码 HTML
<div data-bind="text: $data.content"></div>
的javascript
var viewModel = {
content: ko.observable('original')
};
var cpted = ko.computed(function(){
alert(viewModel.content());
return viewModel.content();
});
ko.applyBindings(viewModel);
viewModel.content.notifySubscribers('new value');
alert(viewModel.content());
答案 0 :(得分:4)
notifySubscribers
调用已注册给定事件的所有订阅。默认情况下,订阅change
事件,但订阅系统是为支持多个事件而构建的。在内部,Knockout还为beforeChange
引发了一个事件,您可以在源代码here中看到该事件。
subscribe
方法(见here)的签名是
subscribe: function (callback, callbackTarget, event)
如果您不使用最后一个参数,则默认使用change
。但您可以订阅beforeChange
活动,甚至制作自己的活动!这就是notifySubscribers
获取活动名称的原因。
你说当你的价值没有改变时,你正试图“强制执行订阅者”。也许自定义事件比change
事件更好,因为即使值未更改,您也在运行它。