【发布时间】:2018-05-08 10:40:30
【问题描述】:
我正在使用KnockoutJs建立一个搜索列表,代码如下:
HTML:
<input type="search" id="search-bar" placeholder="Enter a name" data-bind="value:query,valueUpdate: 'keyup'">
<div id="list" data-bind='template: {foreach: name}'>
<li data-bind='text $data'></li>
</div>
部分Js搜索功能:
this.name = ko.observable('');
this.query = ko.observable('');
this.search = function (value) {
self.name([]);
for (var x in name) {
if (name[x].toLowerCase().indexOf(value.toLowerCase()) >= 0) {
self.name.push(name[x]);
}
}
}
this.query.subscribe(self.search);
使用 $.get 从不同的 URL 检索数据(二维列表)然后进行解析,然后我将解析数据的每个第一个条目 (arsed_data[i][0]) 分配为名称 observable,如代码。
该列表旨在根据搜索框条目过滤内容,它最初显示所有名称,但是一旦我在搜索框中输入内容,名称列表就会变为空,可能是什么原因,是否存在有办法解决吗?
【问题讨论】:
-
self是什么?您是否在未显示的代码中设置了var self = this;?
标签: javascript jquery ajax knockout.js