DurandalJS组成两次调用Knockout

时间:2017-07-27 16:21:02

标签: javascript jquery knockout.js durandal

我正在使用带有Knockout的DurandalJS来加载包含数据的页面。数据加载了ajax调用,因此在执行回调之前数据不可用。

发生的事情是,当数据最终被加载并且我调用AnotherMethod时,它已经尝试将数据绑定一次,并且它抛出一个错误,指出数据不能被绑定两次。我想阻止Durandal这样做并允许我手动应用绑定。

代码:

ko.applyBindings(model)

1 个答案:

答案 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;
};

这将防止您的错误发生,因为它会在应用之前删除绑定(如果已绑定)。