在js控制台中我收到错误:
“未捕获错误:无法解析绑定。 消息:ReferenceError:未定义new_book; 绑定值:value:new_book()。name“
我做错了什么?
答案 0 :(得分:8)
当您使用特定元素作为第二个参数调用ko.applyBindings
时,它将以递归方式绑定该元素下的所有内容。
在您的情况下,当您致电ko.applyBindings(new AppViewModel(), document.getElementById("content"));
时,它会绑定该元素下的所有内容,其中包括“图书”和“约”。
一些选项:
确保“内容”在其自己的元素中(不是...的祖先) 书籍/约)
使用书籍周围的自定义绑定/关于区域 防止“内容”绑定进入这些元素 (这里描述: How to stop knockout.js bindings evaluating on child elements)
将您的视图模型添加到主视图模型并使用with
绑定您的sub
视图模型。
选项#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就是如何解决问题的。