私はノックアウトにかなり慣れていないので、いくつかのバインディングがどのように機能するかを理解しようとしています。
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>
あるいは、実用的なフィドルがここにあります。
私が理解している限り、値を確認できるはずですselectedItem().name
が、適用バインディングはエラーをスローしていますが、div にwith: selectedItem
バインディングがある場合は完全に機能します。
with
このタイプのシナリオでバインドを使用する以外にオプトインはありませんか?