observableArrayがあります
this.Itens = ko.obeservableArray();
this.Itens.toString = function () {return 'my items array'};
jqueryプラグインから始めて、子から始めてアタッチされたメソッドにアクセスする必要があるため、すべての子タグを参照して'Items'プロパティを渡す必要があります。
<div data-bind="customWith: Items ">
<ul data-bind="foreach:$data"> <!-- function reference of items -->
<li data-bind="text: ko.toJSON($data)"></li>
</ul>
<br>
<br>
<!-- Only for debugging -->
<p data-bind="text: ko.toJSON($data)"></p>
<p data-bind="text: ko.toJSON($data()[0])"></p>
<p data-bind="text: $data.fnTest"></p>
<p data-bind="text: $data.fnTest()"></p>
</div>
カスタムko.bindingHandlerは次のとおりです。
ko.bindingHandlers.customWith = {
init: function (element, valueAccessor, allBindingsAcessor, viewModel, bindingContext) {
ko.bindingHandlers.customWith.update.apply (this, arguments);
$(element).myplugin ();
return {'controlsDescendantBindings': true};
},
update: function (element, valueAccessor, allBindingsAcessor, viewModel, bindingContext) {
var fnReference valueAccessor = ();
var childBindingContext = bindingContext.createChildContext (fnReference);
ko.applyBindingsToDescendants (childBindingContext, element);
}
};
完全なコードはここにあります:http://jsfiddle.net/AbraaoAlves/fz5Yj/
divタグcustomWithの内部を見るとわかるように、pはコンテンツを正しくレンダリングし、リストからアイテムを追加または削除すると更新されますが、ulタグ(foreach:$ data)はvalueAccessorをforeachで立っているハンドラーでさえレンダリングしませんすべての正しいデータ。
この場合、リスト内のアイテムをレンダリングするにはどうすればよいですか?