【发布时间】:2015-06-22 09:53:11
【问题描述】:
我尝试在可观察数组中按名称搜索。这是我的代码:
<input class="form-control" data-bind="value: Query, valueUpdate: 'keyup'" autocomplete="off">
还有我在 ViewModel 中的代码
viewModel.Query = ko.observable('');
viewModel.search = function(value) {
viewModel.TestList.removeAll();
for (var x in viewModel.TestList) {
if (viewModel.TestList[x].Name.toLowerCase().indexOf(value.toLowerCase()) >= 0) {
viewModel.TestList.push(viewModel.TestList[x]);
}
}
}
viewModel.Query.subscribe(viewModel.search);
首先:我想按名称字符串搜索。 二:是否有任何其他解决方案不从视图中删除所有元素?我的意思是当查询字符串为空时,应该再次列出所有列表。
现在我收到错误消息:
TypeError: viewModel.TestList[x].Name is undefined
【问题讨论】:
-
你需要一个
if(value) removeAll()守卫 -
这应该可以试试这个
viewModel.TestList()[x].Name -
试试这个效果很好jsfiddle.net/LkqTU/23731。欢呼
-
@cheers 我有一条错误消息:TypeError: item.name is undefined if (item.name.toLoweCase().indexOf(value.trim().toLowerCase()) > -1) {
-
我没看到你能分享你是如何复制它的吗?
标签: javascript knockout.js knockout-2.0