淘汰搜索/筛选
Knockout Search / Filter
我是Knockout JS的新手,我很难完成这个项目。
我创建了一个地图网站,在页面上显示了一系列城镇热门地点的徽章。其想法是,页面左侧的搜索栏将过滤掉地图上与搜索查询不匹配的名称。页面左侧还有一个"主"列表,搜索栏也会从中筛选。
我在jsfiddle上用了一个例子:http://jsfiddle.net/mythical/XJEzc/但我在把同样的逻辑应用到我的代码中时遇到了麻烦。
这是:
HTML:
<li>
<input class="form-control" placeholder="Search…" type="search" name="filter" data-bind="value: query, valueUpdate: 'keyup'" autocomplete="off">
</li>
<ul data-bind="template: {name:'pin', foreach: pins}"></ul>
</ul>
<script type="text/html" id="pin">
<li>
<strong data-bind="text: name"></strong>
</li>
</script>
JS:
self.pins = ko.observableArray([
new self.mapPin("Anchorage Alaska", 61.190491, -149.868937, "test1"),
new self.mapPin("Anchorage Alaska", 61.190491, -149.868937, "test2")
]);
self.query = ko.observable('');
self.filterPins = ko.dependentObservable(function () {
var search = self.query().toLowerCase();
return ko.utils.arrayFilter(name, function (pin) {
return pin.toLowerCase().indexOf(search) >= 0;
});
});
根据我设置的逻辑,如果名称从pin构造函数中删除,它将从映射中删除。
以下是我的工作示例:http://jamesiv.es/projects/map/
HTML
<ul data-bind="template: {name:'pin', foreach: pins}"></ul>
更改为
<ul data-bind="template: {name:'pin', foreach: filterPins}"></ul>
Javascript
self.filterPins = ko.dependentObservable(function () {
var search = self.query().toLowerCase();
return ko.utils.arrayFilter(self.name, function (pin) {
return pin.toLowerCase().indexOf(search) >= 0;
});
});
更改为
self.filterPins = ko.computed(function () {
var search = this.query().toLowerCase();
return ko.utils.arrayFilter(self.pins(), function (pin) {
return pin.name().toLowerCase().indexOf(search) >= 0;
});
});
如果使用比3.2 更新的Knockout版本,只想更新代码
从value
和valueUpdate
更改为textInput
,如所示
HTML:
<input class="form-control" placeholder="Search…" type="search" name="filter" data-bind="textInput: query" autocomplete="off" />
JS:
this.query = ko.observable('');
this.filteredPins = ko.computed(function () {
if (this.query()) {
var search = this.query().toLowerCase();
return ko.utils.arrayFilter(this.pins(), function (pin) {
return pin.name().toLowerCase().indexOf(search) >= 0;
});
} else {
return pins
}}, this);
相关文章:
- 淘汰搜索/筛选
- 搜索不清除筛选器
- 数据表 + 服务器端处理 + 搜索筛选
- 添加'错误'消息发送到同位素.JS搜索筛选器
- 如何使用搜索筛选器初始化列表视图
- Lodash关于使用搜索词和多个属性名称进行筛选的帮助
- 基于多搜索输入筛选ngrepeat
- 用于服务器端处理的数据表,包括分页、筛选和搜索
- jQuery Datatables:如何清除列搜索筛选器
- 如何在 SharePoint 中搜索和筛选 20k 个项目
- 使用输入文本框搜索和筛选 html 表数据
- 使用 GPS 位置筛选移动网站上的搜索
- j查询搜索结果筛选
- Jquery 数据表筛选器/搜索表中的图标图像
- 语义 UI 搜索 - 筛选器字段
- CRM 2011 - 筛选的子网格搜索功能
- 如何在填充选择下拉列表中添加搜索筛选器
- 如何在 SharePoint Online 中为内容搜索 Web 部件创建排序/筛选
- 如何使用jQuery搜索字符串筛选结果
- 如何根据多个数据属性筛选搜索结果