我试图对可观察数组进行排序。
这个小提琴:http://jsfiddle.net/EZUEF/485/与单个observablearray很好地配合。 (单击列表项以进行排序)
但这个小提琴:http://jsfiddle.net/EZUEF/488/不起作用。它是一个包含两个对象的可观察阵列,每个对象都包含一个需要排序的可观察阵列。
我知道这一行是错误的:self.FiveFave.FItemGroup.sort(descSort);
我想我可能需要使用event.currenttarget
但不确定如何。
提前致谢。
答案 0 :(得分:1)
你需要做这样的事情,你应该通过当前的参考进行排序。
查看:强>
<ul data-bind="foreach: $parent.headers">
<li data-bind="click: function(data,event){ $root.sorter($parent,data,event)}, text: title"></li>
</ul>
查看型号:
self.sorter = function(data,header, event){
self.activeSort = header;
var prop = self.activeSort.sortPropertyName;
var descSort = function(a,b){
return a[prop] > b[prop] ? -1 : a[prop] < b[prop] ? 1 : a[prop] == b[prop] ? 0 : 0; };
data.FItemGroup.sort(descSort);
};
工作小提琴here
这里最重要的重要是你应该宣布
self.FItemGroup = ko.observableArray(fItemGroup);
不是self.FItemGroup = fItemGroup;
如果你不做那样的事情意味着你只是邀请一个依赖。如果您尝试对第一个循环数据进行排序,则猜测下一步会发生什么。第二个循环数据也将被排序建议小心。