如何解决knockout applyBindingsToNode添加多个元素?

时间:2014-09-22 12:28:06

标签: javascript jquery html knockout.js

我尝试使用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'));

1 个答案:

答案 0 :(得分:0)

我认为你应该只更新数组,它会更新相应的html元素。 我将更新html而不重新绑定。

请看下面的链接,它是相同的情况

http://www.jefclaes.be/2014/04/rebinding-knockout-viewmodel.html