Knockout.js 在呈现视图之前,Knockout调用subscribe函数
当与Knockout.js 在呈现视图之前,Knockout调用subscribe函数,knockout.js,knockout-2.0,knockout-3.0,Knockout.js,Knockout 2.0,Knockout 3.0,当与arrayChangeparam一起使用时,Knockout在呈现视图之前调用subscribe函数,即使没有beforechange属性 我创建了JSFIDLE,因为StackOverflow忽略了调试器关键字,这是查看此行为的最简单方法。 有没有办法在渲染后发出信号敲除以调用subscribe函数 我需要对subscribe执行此操作,它由自定义绑定使用,不能由afterRender或类似的视图处理函数调用。您可以在视图模型上公开一个方法来创建订阅,然后在调用ko.applyBindi
arrayChange
param一起使用时,Knockout在呈现视图之前调用subscribe函数,即使没有beforechange
属性
我创建了JSFIDLE,因为StackOverflow忽略了调试器关键字,这是查看此行为的最简单方法。
有没有办法在渲染后发出信号敲除以调用subscribe函数
我需要对subscribe执行此操作,它由自定义绑定使用,不能由afterRender
或类似的视图处理函数调用。您可以在视图模型上公开一个方法来创建订阅,然后在调用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();
我无法重现你描述的行为。运行小提琴时,不会记录任何内容。按“推送”时,控制台首先记录订阅
,然后记录推送
(如您所料)。请使用Chrome web浏览器或任何其他支持调试器的浏览器代码>关键字。当按下“PUSH”时,调试器将在subscribe步骤上保持,其中“subscribe”被打印出来,但是items
元素尚未呈现。您好,这实际上并不能解决我的问题,因为我需要在全局使用的自定义绑定中调用它。但是它给了我思考的方向,所以非常感谢你!