【问题标题】:live search using knockout produces error使用淘汰赛进行实时搜索会产生错误
【发布时间】:2015-07-17 01:02:09
【问题描述】:

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

我已尽我所能遵循该示例,但出现以下错误:

Uncaught ReferenceError: Unable to process binding "text: function (){return title }" Message: title is not defined

我做错了什么?

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>

【问题讨论】:

  • 不完整的template: { name: 'point' 是怎么回事?似乎应该只是data-bind="foreach: points"
  • 我认为模板曾经是 foreach 的做法,很多人都在继续这种传统做法。现在对模板的唯一需求是它们是否被递归定义。

标签: javascript knockout.js


【解决方案1】:

您得到的错误是指出title 属性在&lt;li data-bind="text: title"&gt;&lt;/li&gt; 行的上下文中不存在。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-19
    • 2018-06-05
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 2015-07-16
    相关资源
    最近更新 更多