使用knockout进行实时搜索会产生错误

live search using knockout produces error

本文关键字:错误 搜索 实时 knockout 使用      更新时间:2023-09-26

我正在使用knockout进行实时搜索。

我已经尽我所能地遵循了这个例子,但是我得到了以下错误:

Uncaught 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>

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

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