我创建了一个带有分页选项的页面。 代码看起来像:http://blog.ryanvanderpol.com/index.php/2012/07/using-knockoutjs-to-create-an-edit-in-place-data-grid/
现在无法在knockout js中向dependentObservable PagedList数据添加排序
因为PagedList没有Sort()prpoerty ..
请帮助我
答案 0 :(得分:1)
你可以改变他的viewmodel来使用一个计算而不是一个可观察的数组吗?
这是一个例子
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做我的大部分内容
答案 1 :(得分: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的新值而不返回任何值。