淘汰排序不起作用

时间:2013-06-12 11:38:44

标签: javascript sorting knockout.js

我正在尝试对网格进行排序。以下是我的代码

ko.moveInGrid = {
    // Defines a view model class you can use to populate a grid
    viewModel : function(configuration) {
        this.data = configuration.data;
        this.currentPageIndex = ko.observable(0);
        this.pageSize = configuration.pageSize || 5;

        // If you don't specify columns configuration, we'll use scaffolding
        this.columns = configuration.columns
                || getColumnsForScaffolding(ko.utils
                        .unwrapObservable(this.data));
        this.actions = configuration.actions;

        this.itemsOnCurrentPage = ko.computed(function() {
            var startIndex = this.pageSize * this.currentPageIndex();
            return this.data.slice(startIndex, startIndex + this.pageSize);
        }, this);

        this.maxPageIndex = ko.computed(function() {
            return Math.ceil(ko.utils.unwrapObservable(this.data).length
                    / this.pageSize) - 1;
        }, this);
         this.sortByName = function() {
             console.info(configuration.columns);
             console.log("this works");
             configuration.sort(function(a, b) {
                    return a.name < b.name ? -1 : 1;
                });
            };
    }
};

这就是我调用function

的方式
<th data-bind=\"click: $root.sortByName,attr:{'data-translate': headerText}\" class=\"sorting\"></th>\

我的ViewModel没问题。当我点击我的标题时,它会显示以下错误

TypeError: configuration.sort is not a function

1 个答案:

答案 0 :(得分:0)

我看到你要排序名字, 我的客人名称在viewModel.data中。所以你可以先在下面的代码中测试它的工作

viewModel.data.sort(function(a, b) {
                return a.name < b.name ? -1 : 1;
            });).