当与arrayChange
参数一起使用时,Knockout在呈现视图之前调用订阅函数,即使没有beforechange
属性也是如此。
我之所以创建JSfiddle,是因为StackOverflow忽略了JavaScript代码中的debugger;
关键字,这是查看此行为的最简单方法。JSfiddle
有没有办法通知KnockOut在渲染后调用订阅函数?
我需要对subscribe执行此操作,它由自定义绑定使用,不能由afterRender
或类似的视图处理函数调用。
发布于 2018-06-06 02:31:18
您可以在视图模型上公开一个方法来创建订阅,然后在调用ko.applyBindings之后在vm上调用它:
function ViewModel(){
var self = this;
this.items = ko.observableArray([]);
this.push = function(){
self.items.push((Math.random(10)*10).toFixed(0));
console.log("PUSH");
}
this.subscribeAfterApply = function(){
this.items.subscribe(changes=>{
console.log("SUBSCRIPTION FIRED");
}, null, "arrayChange");
console.log("SUBSCRIBED");
}
}
var vm = new ViewModel();
ko.applyBindings(vm);
vm.subscribeAfterApply();
https://stackoverflow.com/questions/50704790
复制相似问题