1

我创建了一个带有分页选项的页面。代码看起来像:http ://blog.ryanvanderpol.com/index.php/2012/07/using-knockoutjs-to-create-an-edit-in-place-data-grid/

现在无法在淘汰赛 js 中向dependentObservable PagedList 数据添加排序

因为 PagedList 没有 Sort() 属性 ..

请帮助我

4

2 回答 2

1

您可以更改他的视图模型以使用计算的而不是可观察的数组吗?

这是一个例子

self.list = ko.observableArray(initialData);

self.sortProperty = ko.observable('propertyNameInRowObject');

self.sortedList = ko.computed( function() {
    var sorted = self.list.sort( self.sortFn );    
    return sorted;
};

self.sortFn = function(a, b) {
    if ( a[self.sortProperty()] > b[self.sortProperty()] ) {
        return 1
    }
    else if ( a[self.sortProperty()] < b[self.sortProperty()] ) {
        return -1
    }
    else { 
        return 0
    }
}

self.onColumnClicked = function(e) {
    var colName = e.target.Name; // probably something like this...
    if ( colName === 'xyz' ) {
        self.sortProperty('xyzProperty');
    }
}

抱歉,我的 javascript 有点生疏了,我大部分时间都在使用 coffeescript

于 2013-02-11T20:15:53.397 回答
0

您可以替换如下内容:

self.someArray = ko.dependentObservable(function() {
    return [someDependency()];
});

有了这个:

self.someArray = ko.observableArray();
ko.dependentObservable(function() {
    self.someArray([someDependency()]);
});

// now you can call sort on someArray
var sortedArray = self.someArray.sort();

您可以使用dependentObserable/computed 来计算其他 observable 的新值而不返回任何值。

于 2013-02-11T20:14:03.677 回答