按项目排序列表,按字母顺序排序

时间:2014-04-07 15:47:17

标签: knockout.js

我想用项目对两个列表进行排序,并按名称中的firstletter按字母顺序排序。

我试过这个,没有任何成功:

var ViewModel = function() {
    var self = this;

    self.storedProceduresInDB1 = ko.observableArray([{
       Name: "A",
       Id: 1
    }, {
       Name: "C",
       Id: 3
    }, {
       Name: "B",
       Id: 4
    }, {
       Name: "D",
       Id: 2
    }]);

    self.storedProceduresInDB2 = ko.observableArray([{
       Name: "C",
       Id: 3
    }, {
       Name: "E",
       Id: 8
    }, {
       Name: "F",
       Id: 7
    }, {
       Name: "B",
       Id: 4
    }]);

    self.sortLists = function () {
       self.storedProceduresInDB1.sort(function (left, right) {
            return left.name == right.name ? 0 : (left.name < right.name ? -1 : 1);
       });

       self.storedProceduresInDB2.sort(function (left, right) {
            return left.name == right.name ? 0 : (left.name < right.name ? -1 : 1);
       });
    };
}

JSFiddle

1 个答案:

答案 0 :(得分:3)

在您的JSFiddle中,问题是JavaScript区分大小写,并且您的代码与其外壳不一致。 storedProceduresInDB1storedProceduresInDB2中的对象有一个Name键,而您的排序代码正在尝试引用name(注意小写的N)。

正确处理案件:http://jsfiddle.net/7zp5K/39/