可观察到的性能

knockout observableArray performance

本文关键字:性能 观察      更新时间:2023-09-26

如何一次性将所有值添加到observableArray中?在我的例子中,在循环中添加值非常缓慢。这里有一个简单的例子。jsfiddle

var myArray = ko.observableArray([]);
var valuesToInsert = [1,2,3];
myArray.push.apply(myArray, valuesToInsert);

因为你要清除整个可观察数组,你可以这样做:

var viewModel = {
    name: "base",   
    addingValue:new ko.observable(),
    someArr: new ko.observableArray(["123","432","sdafasd","xrere"]),
    add: function()
    {
        this.someArr.push(this.addingValue());
    },
    updateSomeArr:function()
    {
        var temp = [];
        for(var i=0;i<5;i++)
        {
            temp.push("555565");
        }
        this.someArr(temp);
    }
}

已经有一个选定的答案,但我认为以下内容会有所帮助。你可以通过执行可观察数组来禁用观察行为,以获得底层数组实现:

var underlyingArray = viewModel.someArr();

你可以添加项目到underlyingArray而不触发someArr事件。添加完项后,调用:

viewModel.someArr.valueHasMutated();

这将导致事件触发,通知所有依赖于viewModel.someArr()的可观察对象。