我尝试使用knockout applyBindingsToNode来动态添加和删除元素。原因是我需要更新我的html,这样就会削减绑定,这就是我需要使用applyBindingsToNode的原因。
我在这里有一个例子,如果你点击按钮Rebind名称,它会添加四个元素,但我只期望2.我想念的是什么?
这是我的傻瓜 http://jsfiddle.net/noppanit/dhztqgbz/
var Model = function Model() {
var people = ko.observableArray([{
name: 'name1'
}, {
name: 'name2'
}]);
var changeElement = function () {
people.push({
name: 'name3'
});
};
var rebindElement = function () {
var peopleList = document.getElementById('people_list');
ko.cleanNode(peopleList);
ko.applyBindingsToNode(peopleList, {
foreach: [{
name: 'name3'
}, {
name: 'name4'
}]
});
};
return {
people: people,
changeElement: changeElement,
rebindElement: rebindElement
};
};
ko.applyBindings(new Model(), document.getElementById('wrapper'));
答案 0 :(得分:0)
我认为你应该只更新数组,它会更新相应的html元素。 我将更新html而不重新绑定。
请看下面的链接,它是相同的情况
http://www.jefclaes.be/2014/04/rebinding-knockout-viewmodel.html