对可观察数组foreach的更新删除了格式化knockoutjs

时间:2013-12-09 20:31:53

标签: javascript knockout.js

更新链接到foreach的可观察数组将重绘forEach生成的所有DOM元素。如果不将可观察元素绑定到数组中对象的属性,是否有办法避免完全重绘DOM?

我显然想要重新绘制更新的特定元素,但是如果我有一个隐藏/可见元素,它会将其重置为默认值(如果它是JS onclick样式的片段)。

http://jsfiddle.net/OrganicCat/CjH87/6/

var SimpleListModel = function(items) {
    this.items = ko.observableArray(items);
    this.itemToAdd = ko.observable("");

    this.openItem = function(data, event) {
        $(event.target).next().toggle();
    };
    this.modifyList = function() {
        var modifiedList = ["Cats", "Dogs", "Hedgehogs"];
        this.items(modifiedList);
    };
};

ko.applyBindings(new SimpleListModel(["Alpha", "Beta", "Gamma"]));

1 个答案:

答案 0 :(得分:2)

您可能希望稍微查看一下您的架构。

MVVM意味着您的整个视图应绑定到您的viewModel。所以所有元素都由视图模型控制。

如果你尝试做一半半的方法,那么你会发现自己正在与MVVM模式作斗争。如果您需要控制属于foreach的元素的可见性,则需要控制可观察数组的可见性。

希望有所帮助。