9
如何清除/删除Knockout.js中的可观察绑定?
我正在将功能构建到用户可以执行多次的网页上。通过用户的操作,使用ko.applyBindings()创建对象/模型并将其应用于HTML。 数据绑定的HTML是通过jQuery模板创建的。 到目前为止,一切都很好。 当我通过创建第二个对象/模型并调用ko.applyBindings()重复此步骤时,遇到两个问题: 标记显示先前的对象/模型以及新的对象/模型。 尽管对象/模型中的属性之一仍在标记中呈现,但仍会发生JavaScript错误。 为了解决这个问题,在第一遍之后,我调用jQuery的.empty()来删除包含所有数据绑定属性的模板化HTML,以使其不再存在于DOM中。当用户开始第二遍的处理时,将数据绑定的HTML重新添加到DOM。 但是就像我说的那样,当HTML重新添加到DOM并重新绑定到新的对象/模型时,它仍然包含来自第一个对象/模型的数据,并且我仍然遇到未发生的JS错误。在第一遍。 结论似乎是,即使从DOM中删除了标记,淘汰赛仍保留了这些绑定属性。 因此,我正在寻找一种从淘汰赛中删除这些绑定属性的方法。告诉淘汰赛,不再有可观察的模型。有没有办法做到这一点? 编辑 基本过程是用户上传文件;然后服务器使用JSON对象进行响应,将数据绑定的HTML添加到DOM,然后使用以下方法将该JSON对象模型绑定到该HTML mn.AccountCreationModel = new AccountViewModel(jsonData.Account); ko.applyBindings(mn.AccountCreationModel); 用户在模型上进行了一些选择后,将同一对象发布回服务器,从DOM中删除了数据绑定的HTML,然后得到了以下JS mn.AccountCreationModel = null; 当用户希望再次执行此操作时,将重复所有这些步骤。 恐怕代码太“涉及”以至于无法进行jsFiddle演示。