使用淘汰赛进行实时搜索会产生错误

时间:2015-07-16 16:46:52

标签: javascript knockout.js

我正在使用淘汰赛进行实时搜索。

我已尽力遵循示例,但收到以下错误:

  

未捕获的ReferenceError:无法处理绑定“text:function(){return title}”消息:标题未定义

我做错了什么?

var points = [
    {title: 'San Francisco Zoo',longitude: 37.7331,lattitude: -122.5031},
    {title: 'Lake Merced', longitude:37.7094,lattitude:-122.4958}
];

var viewModel = {
    query: ko.observable('')
};

viewModel.points = ko.computed(function(){
    var search = this.query().toLowerCase();
    return ko.utils.arrayFilter(points, function(point){
        return point.title.toLowerCase().indexOf(search)>=0;
    });
}, viewModel);

ko.applyBindings(viewModel);
<input id="s-input" class="controls" data-bind="value: query, valueUpdate: 'keyup'" placeholder="Sites Search">
<ul data-bind=" template: {name:'point', foreach: points">
    <li data-bind="text: title"></li>
</ul>

1 个答案:

答案 0 :(得分:1)

您收到的错误是在title行的上下文中不存在属性<li data-bind="text: title"></li>

此处的语法错误<ul data-bind=" template: {name:'point', foreach: points">会阻止下一行的上下文成为point对象,而是保留原始上下文,即视图模型本身。您的视图模型没有title属性,因此出错。