【发布时间】:2013-05-03 01:44:41
【问题描述】:
我对淘汰赛还很陌生,并试图了解一些绑定应该如何工作。
我认为我可以在不需要 with 的情况下在普通绑定中引用一个可观察的子对象,但我无法让它工作。
我的模型和视图模型是;
Model = function(name) {
this.name = ko.observable(name);
};
ViewModel = function () {
var list = ko.observableArray([new Model("Apple"), new Model("Pear")]),
selectedItem = ko.observable();
function selectItem(item) {
selectedItem(item);
}
return {
list: list,
selectedItem: selectedItem,
selectItem: selectItem
};
};
这里是绑定:
<div id="content">
<ul id="list" data-bind="foreach: list">
<li data-bind="text: name, click: $parent.selectItem"></li>
</ul>
</div>
<p>Will show selected item</p>
<div data-bind="with: selectedItem">
<span data-bind="text: name"></span>
</div>
<div>
<p>Won't show selected item</p>
<span data-bind="text: selectedItem().name()"></span>
</div>
另外一个工作的fiddle 在这里。
据我所知,我应该能够看到 selectedItem().name 的值,但应用绑定会引发错误,但是如果 div 具有 with: selectedItem 绑定,它会完美运行。
在这种情况下,我是否没有选择,只能使用with 绑定?
【问题讨论】: