Javascript 渲染后KnockoutJS从viewModel检索数据问题
我在使用KnockoutJS1.2.1时有一个非常奇怪的行为(还不能切换到2,或者相信我,我会) 基本上,我在模板上设置了后渲染。在后渲染中,我需要从viewModel检索数据。当我试图在render函数中通过viewModel.stuff()从中获取数据时,会发生strrange行为。它似乎多次调用render或其他东西 这是代码Javascript 渲染后KnockoutJS从viewModel检索数据问题,javascript,knockout.js,Javascript,Knockout.js,我在使用KnockoutJS1.2.1时有一个非常奇怪的行为(还不能切换到2,或者相信我,我会) 基本上,我在模板上设置了后渲染。在后渲染中,我需要从viewModel检索数据。当我试图在render函数中通过viewModel.stuff()从中获取数据时,会发生strrange行为。它似乎多次调用render或其他东西 这是代码 var viewModel = { stuff: ko.observableArray([{ id : 1, name : 'Thing'},
var viewModel = {
stuff: ko.observableArray([{ id : 1, name : 'Thing'},
{ id: 2, name : 'Thingier' },
{ id : 3, name : 'Thingiest' }])
};
window.render = function(el){
// This line does weird stuff!!
// Observe the console with and without it
// All I want to do is get my stuff...
var stuff = viewModel.stuff();
console.log(el);
};
var update = function(){
console.log(viewModel);
viewModel.stuff.push({ id : 4, name : 'Thingiestest' });
};
$(function(){
ko.applyBindings(viewModel);
$("#add").click(function(){
update();
});
});
这是小提琴
只要试着在render函数中注释掉var stuff=viewModel.stuff(),并在单击按钮时观察控制台日志中的差异
谢谢你的帮助,因为我知道这个有点奇怪 绑定在计算的可观察对象内部执行,因此当您在afterRender函数中调用
viewModel.stuff()
时,您正在为stuff
可观察对象上的每个对象创建一个依赖项
添加新项时,将在再次渲染每个项后调用afterRender
看看这里的日期:
我不确定您想要完成的确切操作,但是如果您需要在afterRender
中完成,并且不需要依赖项,那么您可以在setTimeout 0中执行操作