以相同的observableArray排序不同的方式

时间:2015-03-13 20:13:41

标签: javascript arrays sorting knockout.js

我有一个observableArray对象具有可观察的属性。我想要显示两次这个数组,每个数组都有不同的排序顺序。这可能吗?

我已经尝试保留一个获取数组的计算属性,对其进行排序并返回它,但是这会对原始数组进行排序并且不会执行我想要的操作。

function ViewModel(){
    var self = this;
    self.Items = ko.observableArray([]);
    self.ItemsOrdered = ko.computed(function(){
        var i = self.Items();
        return i.sort(function(left,right){
            return 1;
        });
    });
}

看到这个jsfiddle:http://jsfiddle.net/qhg8t4je/1/ 在这里,我反转数组,希望在第一个列表中按顺序查看A的值,在第二个列表中按顺序查看B的值,但两个列表似乎都已反转。

我找不到维护(或只显示?)两个不同排序顺序的建议,我只能找到维护一个排序的建议(正如我的jsfiddle所做的那样)。

1 个答案:

答案 0 :(得分:2)

.sort更新原始数组。克隆数组(例如.slice())。

http://jsfiddle.net/qhg8t4je/2/