内部正在执行Knockout js订阅函数(对于observable)。我已经在我的一个可观察对象上获得了一个订阅函数。我假定只有当它的可观察对象发生变化时,才会执行订阅函数。尽管当我追踪我的代码时,我可以看到它在初始化时调用ko.applyBindings(MyViewModel);
后正在执行。ko.applyBindings(...)
以下是我已经得到了我的ViewModel:
function MyViewModel(myModel){
this.myProperty = ko.observable(myModel.myProperty);
this.myProperty .subscribe(function (val) {
// do sth..
}, this);
}
,这是我打这个电话给applyBindings:
jQuery(document).ready(
function ($) {
ko.applyBindings(MyViewModel);
});
这是一个预期的行为?
订阅功能正在ko.applyBindings(MyViewModel);
之后被调用,这意味着我在此期间没有从UI获取任何输入。
我希望拥有它,所以只要myProperty的值发生更改,它就只执行我的订阅函数体。有没有办法让我跟踪我的可观察对象,看看发生了什么变化?
订阅只会在值更改时运行。 applyBindings中的值可能会从写入其值的绑定中更改。你是否碰巧用'value'绑定了'select'属性,并且有一个初始数值被更新为一个字符串? –
@RPNiemeyer:感谢您的有用评论。由于来自后端代码的一些变化,订阅实际上在初始化后被调用。正如你所提到的那样, – r2d2oid