【发布时间】:2012-07-31 11:50:26
【问题描述】:
如何更新完整的 viewModel ?
- 在页面加载时,我得到一个模型并使用
ko.mapping.fromJS(myObject)将其转换为 viewModel。 - 如果用户单击按钮,我想从服务器获取更新数据
- 现在我想应用这些更新
如果我使用ko.applyBindings(viewModel);,它会完美地更新用户界面。但它再次添加了相同的事件。因此,如果用户单击按钮,事件会被触发两次,第三次等等。
问题
什么是更新我的完整视图模型的好方法。也许我删除绑定并再次应用它们? (怎么做)。
示例
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();
});
更新
Steve Greatrex能否发布您的自定义绑定实现?
ko.bindingHandlers.domBinding = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
viewModel.domElement = element;
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
viewModel.domElement = element;
},
};
【问题讨论】:
-
您也可以发布您的 viewModel 代码吗?
domElement是可观察的吗?
标签: javascript knockout.js knockout-mapping-plugin