Knockout.js嵌套的viewmodel不起作用

时间:2012-08-15 12:07:02

标签: javascript knockout.js

我是ko的新手,但找不到我的问题的解决方案。我尝试将可绑定属性组织到视图模型层次结构中。根据文档,在我看来,以下应该有效,但事实并非如此。你有任何提示吗?

function AppViewModel() {
    this.nested = new NestedViewModel();
}

function NestedViewModel() {
    this.firstName = ko.observable();
     this.lastName = "Bertington";
}

ko.applyBindings(new AppViewModel());

并在此处使用:

<p data-bind="with: nested">

<p>First name: <input type="text" data-bind="value: firstName, valueUpdate: afterkeydown"></input></p>
<p>Last name: <strong data-bind="text: firstName"></strong></p>

</p>

1 个答案:

答案 0 :(得分:6)

您的HTML无效。您无法嵌套<p>元素。因此,浏览器会自动生成结束标记<p data-bind="with: nested"></p>

用例如外包装替换外包装一个<div>使HTML有效并且脚本有效。

此外,它必须是valueUpdate: 'afterkeydown'(添加了引号),否则knockout会查找名为“afterkeydown”的可观察对象。

这是一个有效的演示:http://jsfiddle.net/JwWCc/1/