Knockout.js foreach绑定工作,但绑定没有

时间:2014-12-19 17:07:30

标签: javascript data-binding knockout.js single-page-application knockout-3.0

使用Knockout.js 3.2.0,我一直在争取成功绑定 observableArray ,并将其缩小到 绑定。 Foreach 没有问题,但 with 会引发错误 Uncaught ReferenceError:无法处理绑定“ :function(){return contactLists}“。

任何人都可以帮我理解发生了什么吗?

这有效:

<!-- ko foreach: contactLists -->
    <p data-bind="text: title"></p>
<!-- /ko -->

这不是:

<!-- ko with: contactLists -->
    <p data-bind="text: title"></p>
<!-- /ko -->

ko.observableArray applyBindings 声明:

var viewModels = {
        contactLists: ko.observableArray([new ContactList({title: "This Is List #1", subCount: 4321}), new ContactList({title: "List #2", subCount: 9876}), new ContactList({title: "jList #3", subCount: 1234})])
    }

    ko.applyBindings(viewModels);

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

“with”绑定不适用于数组。您必须指定要工作的元素。例如:

<!-- ko foreach: contactLists -->
  <!-- ko with: data -->
    <p data-bind="text: gender"> </p> 
  <!-- /ko -->
<!-- /ko -->


function ContactList(data) {
  this.title = data.title;
  this.subCount = data.subCount;
}

var viewModels = {
  contactLists: ko.observableArray([
    {title: "This Is List #1", data: { subCount: 4321, gender: "male"}},
    {title: "List #2", data: { subCount: 5321, gender: "female"}},
    {title: "jList #3", data: { subCount: 1221, gender: "any"}}])
}

ko.applyBindings(viewModels);

See the Pen