如何更新完整的 viewModel ?
- 在页面加载时,我得到一个模型并使用转换它
ko.mapping.fromJS(myObject)
到一个视图模型。
- 如果用户单击按钮我想从服务器获取更新的数据
- 现在我想应用这些更新
如果我使用ko.applyBindings(viewModel);
它完美地更新了用户界面。但它再次添加了相同的事件。因此,如果用户单击该按钮,该事件将被触发两次,第三次,依此类推。
Question
更新我的完整 viewModel 的好方法是什么?也许我删除绑定并再次应用它们? (这个怎么做)。
Sample
var viewModel;
function update()
{
$.ajax({
url: '...',
type: "GET",
statusCode: {
200: function (data) {
viewModel = ko.mapping.fromJS(data);
ko.applyBindings(viewModel);
}
}
});
}
// first call after page load
update();
// user click
$("#myButton").click(function() {
update();
});
Update
史蒂夫·格雷特雷克斯您可以发布您的自定义绑定实现吗?
ko.bindingHandlers.domBinding = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
viewModel.domElement = element;
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
viewModel.domElement = element;
},
};
如果您查看“指定更新目标”映射文档 http://knockoutjs.com/documentation/plugins-mapping.html,您可以指定映射的目标。
这应该意味着你可以说:
if (!viewModel)
viewModel = ko.mapping.fromJS(data);
else
ko.mapping.fromJS(data, {}, viewModel);
这样,您将在初始加载时创建一个视图模型,然后为任何后续加载更新该视图模型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)