Knockout实用函数 - ko.utils.arrayFilter - 数据绑定

时间:2016-07-02 21:42:35

标签: javascript knockout.js

我找到了这个针对淘汰实用程序的教程,它通过一个数组进行过滤并创建一个新的过滤版本的数组。 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'">

2 个答案:

答案 0 :(得分:0)

我愿意打赌它再次成为font-size:1.9rem;的问题。例如,我认为您不希望将this作为上下文对象传递给计算器,而只是this.venueList

如果您有this变量,请坚持使用,并且不要使用self。否则,请确保将正确的this参数传递给所有函数调用。

答案 1 :(得分:0)

我发现了这个问题,我错过了self.kofilter = ko.observable(&#39;&#39;);