我找到了这个针对淘汰实用程序的教程,它通过一个数组进行过滤并创建一个新的过滤版本的数组。 http://www.knockmeout.net/2011/04/utility-functions-in-knockoutjs.html
从那里,我明白了this.filter in" this.filter()。toLowerCase();"是绑定到视图中输入框的ko.observable。
我尝试将其集成到我的代码中。 我知道我需要更多改变。方法" ko.utils.stringStartsWith"不再支持
我收到错误" Uncaught TypeError:this.kofilter不是函数" 我不确定这意味着什么,数据绑定有问题吗?
这是我的JS代码
this.filteredItems = ko.computed(function(){
console.log(this)
var filter = this.kofilter().toLowerCase();
if (!filter) {
return self.venueList();
} else {
return ko.utils.arrayFilter(this.venueList(), function(venues) {
return ko.utils.stringStartsWith(venues.name().toLowerCase(), filter) ;
});
}
}, this.venueList);
};
这是HTML
<br><input placeholder = "Search..." data-bind="value: kofilter, valueUpdate: 'afterkeydown'">
答案 0 :(得分:0)
我愿意打赌它再次成为font-size:1.9rem;
的问题。例如,我认为您不希望将this
作为上下文对象传递给计算器,而只是this.venueList
。
如果您有this
变量,请坚持使用,并且不要使用self
。否则,请确保将正确的this
参数传递给所有函数调用。
答案 1 :(得分:0)
我发现了这个问题,我错过了self.kofilter = ko.observable(&#39;&#39;);