渲染后挖空JS从视图模型中检索数据问题
KnockoutJS After Render retrieve data from viewModel issue
我在进行 KnockoutJS 1.2.1 时有一个非常奇怪的行为(还不能切换到 2,或者相信我会的(。
基本上,我在模板上设置了渲染后。在渲染后,我需要从我的视图模型中检索数据。当我尝试通过渲染函数中的 viewModel.stuff(( 从中获取数据时,发生了 strrrange 行为。它似乎多次调用渲染或其他东西。
这是代码...
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();
});
});
这是小提琴...
http://jsfiddle.net/jcreamer898/wZ5bD/
只需尝试在渲染函数中注释掉 var stuff = viewModel.stuff((,并在单击按钮时观察控制台日志中的差异。
感谢这里的任何帮助,因为我知道这个有点奇怪!
绑定在计算的可观察量内部执行,因此当您在 afterRender 函数中调用 viewModel.stuff()
时,您正在为stuff
可观察量的每个绑定创建一个依赖项。
添加新项时,将在再次呈现每个项后调用afterRender
。
看看这里的日期:http://jsfiddle.net/rniemeyer/wZ5bD/4/
我不确定您要完成的确切事情,但是如果您需要在afterRender
中执行此操作并且不想要依赖项,那么您可以在setTimeout 0中执行操作。 http://jsfiddle.net/rniemeyer/wZ5bD/5/
相关文章:
- 如何使用Javascript客户端对象模型检索Sharepoint 2010列表项权限
- 对“类型”和“状态”字段的更新会中断WSAPI中的模型检索
- 无法检索ng模型的值(与ng重复使用)
- 余烬 js 不更新列表从模板中的模型检索
- 在 Angular JS 中从模型检索到控制器的 id
- 从 ng 模型中检索数据
- 挖空视图模型序列化为 db 并检索
- 检索模型属性值
- 主干持久性从服务器检索数据;t填充集合和模型
- 渲染后挖空JS从视图模型中检索数据问题
- 从模型中检索骨干集合并将其保留为集合
- EmberJS-从控制器检索模型的奇怪行为
- Backbone.js将从服务器检索到的模型添加到集合中
- 在树状的angularjs模型中检索对象
- Ember js:如何从控制器中检索底层模型
- 使用Backfire绑定对模型执行取操作不会检索到任何数据
- 正在从ng模型中检索数据
- 当使用类模型/typescript时,在属性指令中检索参数值
- 如何在创建新模型时检索模型ID
- 如何使用javascript的客户端对象模型检索sharepoint列表中的超链接数据类型列值