当与beforechange
param一起使用时,Knockout在渲染视图之前调用subscribe函数,即使没有arrayChange
属性。
我创建了JSfiddle,因为StackOverflow忽略了JavaScript代码中的debugger;
关键字,这是查看此行为的最简单方法。
JSfiddle
有没有办法让KnockOut在渲染后发出调用订阅函数的信号?
我需要使用subscribe执行此操作,它由自定义绑定使用,不能由afterRender
或类似的视图处理函数调用。
答案 0 :(得分:0)
您可以在视图模型上公开一个方法来创建订阅,然后在调用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();