在我的视图模型中,我有一个 knockoutjs ObserableArray。在我初始化 ViewModel 之后,它就成功绑定了数据。然后,我需要做的是对集合进行排序。
$.each(vm.searchResults(), function (i, property) {
console.log(property.Name());
});
vm.searchResults().sort(function (a, b) {
return a.Name().toLowerCase() > b.Name().toLowerCase() ? 1 : -1;
});
$.each(vm.searchResults(), function (i, property) {
console.log(property.Name());
});
如您所见,我将元素的名称输出到控制台以查看排序前后的顺序。排序工作得很好。问题在于 UI 更新。不知何故,用户界面没有更新。
然后,尝试使用以下代码从数组中删除一条记录,以查看 UI 是否会响应:
vm.searchResults().shift();
UI 保持不变,没有再次更新。这里会有什么问题?
编辑:
这也是一个示例案例:http: //jsfiddle.net/tugberk/KLpwP/
这里也有同样的问题。
编辑:
我解决了这个示例中显示的问题:http: //jsfiddle.net/tugberk/KLpwP/16/但我仍然不确定为什么它像我最初尝试的那样有效。