Knockout.js ko.applyBindings()层次结构绑定

时间:2012-02-13 07:29:33

标签: knockout.js

http://jsfiddle.net/3JRVS/1/

在js控制台中我收到错误:

“未捕获错误:无法解析绑定。 消息:ReferenceError:未定义new_book; 绑定值:value:new_book()。name“

我做错了什么?

2 个答案:

答案 0 :(得分:8)

当您使用特定元素作为第二个参数调用ko.applyBindings时,它将以递归方式绑定该元素下的所有内容。

在您的情况下,当您致电ko.applyBindings(new AppViewModel(), document.getElementById("content"));时,它会绑定该元素下的所有内容,其中包括“图书”和“约”。

一些选项:

  1. 确保“内容”在其自己的元素中(不是...的祖先) 书籍/约)

  2. 使用书籍周围的自定义绑定/关于区域 防止“内容”绑定进入这些元素 (这里描述: How to stop knockout.js bindings evaluating on child elements

  3. 将您的视图模型添加到主视图模型并使用with 绑定您的sub视图模型。

  4. 选项#3将是我的建议。以下是您的小提琴样本:http://jsfiddle.net/rniemeyer/8dhzK/

答案 1 :(得分:1)

您收到错误,因为此行

ko.applyBindings(new AppViewModel(), document.getElementById("content"));

将整个“content”div(包括所有子级div,如“books”和“about”)绑定到没有new_book属性的AppViewModel。正如AlfeG在评论中指出的那样,here就是如何解决问题的。