我正在使用带有Knockout的DurandalJS来加载包含数据的页面。数据加载了ajax调用,因此在执行回调之前数据不可用。
发生的事情是,当数据最终被加载并且我调用AnotherMethod
时,它已经尝试将数据绑定一次,并且它抛出一个错误,指出数据不能被绑定两次。我想阻止Durandal这样做并允许我手动应用绑定。
代码:
ko.applyBindings(model)
答案 0 :(得分:0)
作为应用绑定之前的安全预防措施,我总是检查该元素是否已经绑定在我的应用程序上。
if (isBound("container"))
ko.cleanNode(document.getElementById('container'));
// Bind
ko.applyBindings(viewModel, document.getElementById("container"));
我的isBound方法:
var isBound = function (id) {
if (document.getElementById(id) != null)
return !!ko.dataFor(document.getElementById(id));
else
return false;
};
这将防止您的错误发生,因为它会在应用之前删除绑定(如果已绑定)。