我有一个非常简单的视图模型。我有一个observableArray bind
,可以通过调用customers
进行过滤。这工作正常,我的视图得到更新。现在我想要一个函数来恢复observableArray viewModel.filterCustomers
并在我调用customers
时更新UI。
如果我打电话:
getCachedCustomers
viewModel.customers(viewModel.cachedCustomers());
未更新。该数组仍然具有过滤后的元素。
这是一个"愚蠢的"我的问题的版本。任何帮助表示赞赏。
viewModel.customers()
答案 0 :(得分:2)
我觉得你的视图模型比它需要的更复杂。
在我看来,你不需要filterCustomers
方法,你需要的是有一个filteredCustomers
计算的observable:
function myViewModel() {
var self = this;
this.customers = ko.observableArray([]);
//use this observable in your markup to retrieve the filter
this.searchFilter = ko.observable('');
this.filteredCustomers = ko.computed(function () {
var tempFilteredCustomers = self.customers();
if (typeof self.searchFilter() == 'string' && self.searchFilter().length > 0) {
//apply filter here on tempFilteredCustomers
}
return tempFilteredCustomers;
}
}