将过滤器应用于observableArray
Applying filter to a observableArray?
我正在做一个项目,在这个项目中,我有一个搜索字段,可以根据搜索框中键入的内容过滤observableArray。
这是我的html代码:
<input class="form-control" placeholder="Search for a burger joint around downtown Indianapolis, IN" data-bind="value: searchInput, valueUpdate: 'afterkeydown', event: { keyup: filterResults }">
这是我的js代码:
var BurgerJoint = function(data) {
this.id = ko.observable(data.id);
this.name = ko.observable(data.name);
this.long = ko.observable(data.long);
this.lat = ko.observable(data.lat);
this.comments = ko.observable(data.comments);
}
var ViewModel = function() {
var self = this;
self.searchInput = ko.observable('');
this.burgerList = ko.observableArray([]);
initialBurgerJoints.forEach(function(burgerItem){
self.burgerList.push( new BurgerJoint(burgerItem) );
addmarker(burgerItem.lat, burgerItem.long, burgerItem.id, burgerItem.name, burgerItem.comments);
});
self.burgerList.sort(function (l, r) { return l.name() > r.name() ? 1 : -1 });
self.currentFilter = ko.observable();
self.filterResults = function(){
var value = self.searchInput().toLowerCase();
if(value != ''){
self.burgerList(self.burgerList.filter(function(data){
var startsWith = data.name.toLowerCase().startsWith(value);
return burgerList;
}));
}
return true;
};
self.showmap = function(data) {
viewmarker(data.id());
};
}
ko.applyBindings(new ViewModel());
我的filterResults函数有问题。有什么建议吗?
也许您不应该在filter函数中设置原始的burgerList
。首先对原始文件进行复制/克隆。试试之类的东西
self.filterResults = function(){
var value = self.searchInput().toLowerCase();
if(value != ''){
self.burgerList(self.burgerList().filter(function(data){
return data.name.toLowerCase().startsWith(value);
}));
}else{
// reset with the original burgerList contents here
self.burgerList(self.burgerListClone());
}
};
相关文章:
- observablearray KnockoutJs中的对象
- Filtering observableArray
- 过滤observableArray时出现问题
- 检测observableArray是否发生变化
- UI中未更新Knockout ObservableArray
- 自定义过滤淘汰js observableArray
- KNOCKOUT js observableArray 不起作用
- ko observablearray:推送和直接分配之间的区别
- 嵌套的JSON数组和Knockout observableArray
- 无法将项添加到observableArray
- KNOCKOUT ko.observableArray 不会刷新视图
- 在Knockoutjs中设置计算对象的observableArray的更好方法
- 访问observableArray中的非对象
- ObservableArray.push()触发点击事件
- 将JSON映射到observableArray时出错
- Knockoutjs计算未从observableArray更新
- observableArray is not defined
- 可以't get return Array插入到knockoutjs observableArray中
- 从knockoutJS中的observableArray中删除Self
- 用新数据替换observableArray