1
傳遞函數我有一個observableArrayknockoutjs:自定義數據綁定「與」參照
this.Itens = ko.obeservableArray();
this.Itens.toString = function() {return 'my items array'};
我需要參考的所有子標籤通過了「物品」屬性,因爲我要訪問附着兒童做起,從一個jQuery插件啓動方式:
<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 所有正確的數據。
在這種情況下,我可以做什麼來呈現列表中的項目?
你真的不清楚你想達到什麼,這裏的目標是什麼?順便說一句,是不是你的調用customWith.update多餘,因爲更新將在init後立即調用。 – madcapnmckay
刪除那個調用來在init裏面更新會導致它開始工作。 –