淘汰排序不起作用

knockout sorting not working

本文关键字:不起作用 排序 淘汰      更新时间:2023-09-26

我正在尝试排序我的网格。下面是我的代码

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

我看到你想对name排序,名字应该在viewmodel。data中。所以你可以先测试下面的代码

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