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

Update on observable array foreach removes formatting knockoutjs

本文关键字:删除 格式化 knockoutjs 更新 观察 数组 foreach      更新时间:2024-05-15

更新链接到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"]));

您可能需要稍微了解一下您的体系结构。

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

如果你试着采取半吊子的方法,那么你会发现自己在与MVVM模式作斗争。如果需要控制foreach中元素的可见性,则需要从可观察数组中控制可见性。

希望能有所帮助。