Knockout.js 使用<;选择>;
我目前有一个使用Knockout的排序实现,其中每个列都是一个数组,用户可以单击该列对ObservableArray进行排序。我想把它转换成一个,我很接近——在我创建的排序中选择一列确实调用了排序函数,但没有像最初的实现那样将要排序的属性传递给排序函数。我曾尝试调用类似“sort(sortType)”的函数来显式传递我想要排序的属性,但这不起作用/原始实现不需要这样的函数 原始分拣代码:Knockout.js 使用<;选择>;,knockout.js,Knockout.js,我目前有一个使用Knockout的排序实现,其中每个列都是一个数组,用户可以单击该列对ObservableArray进行排序。我想把它转换成一个,我很接近——在我创建的排序中选择一列确实调用了排序函数,但没有像最初的实现那样将要排序的属性传递给排序函数。我曾尝试调用类似“sort(sortType)”的函数来显式传递我想要排序的属性,但这不起作用/原始实现不需要这样的函数 原始分拣代码: <div data-bind="foreach: headers" class="headers"&g
<div data-bind="foreach: headers" class="headers">
<span data-bind="click: $parent.sort, text: title"></span>
</div>
<select data-bind="event: { change: sort}, options: headers, optionsText: 'title', optionsValue: 'sortType'"> </select>
选择排序代码:
<div data-bind="foreach: headers" class="headers">
<span data-bind="click: $parent.sort, text: title"></span>
</div>
<select data-bind="event: { change: sort}, options: headers, optionsText: 'title', optionsValue: 'sortType'"> </select>
以下是您必须使用
值
绑定,而不是更改
事件:
<select data-bind="value: sortMode,
options: headers,
optionsText: 'title'"></select>
针对您的特定代码/案例 在这里查看我的建议: 查看代码,我建议将
self.activeSort
设置为可观察的,引入名为sortMethod
的pureComputed
属性,以及名为sortedMovies
的pureComputed
数组:
self.activeSort = ko.observable(self.headers[0]);
self.sortMethod = ko.pureComputed(function() {
var sortType = self.activeSort().sortType;
switch (sortType) { /* return a function(a,b) { } */ }
});
self.sortedMovies = ko.pureComputed(function() {
return self.movies().sort(self.sortMethod());
});
然后,
的数据绑定将是:
<select data-bind="value: activeSort,
options: headers,
optionsText: 'title'"></select>
更改此选项将更新
排序方法
,这将更新已排序的视频
,您必须使用值
绑定,而不是更改
事件:
<select data-bind="value: sortMode,
options: headers,
optionsText: 'title'"></select>
针对您的特定代码/案例 在这里查看我的建议: 查看代码,我建议将
self.activeSort
设置为可观察的,引入名为sortMethod
的pureComputed
属性,以及名为sortedMovies
的pureComputed
数组:
self.activeSort = ko.observable(self.headers[0]);
self.sortMethod = ko.pureComputed(function() {
var sortType = self.activeSort().sortType;
switch (sortType) { /* return a function(a,b) { } */ }
});
self.sortedMovies = ko.pureComputed(function() {
return self.movies().sort(self.sortMethod());
});
然后,
的数据绑定将是:
<select data-bind="value: activeSort,
options: headers,
optionsText: 'title'"></select>
更改此选项将更新sorttmethod
,该方法将更新sortedMovies