現在、正常に機能するリスト内の行をストライプするノックアウトバインディングがあります
ko.bindingHandlers.stripe = {
update: function (element, valueAccessor, allBindingsAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor()); //creates the dependency
var allBindings = allBindingsAccessor();
var even = allBindings.evenClass;
var odd = allBindings.oddClass;
//update odd rows
$(element).children(":nth-child(odd)").addClass(odd).removeClass(even);
//update even rows
$(element).children(":nth-child(even)").addClass(even).removeClass(odd); ;
}
}
トリガー元
<button data-bind="click: addWidget" style="display:none">Add Item</button>
私が抱えている問題は、サーバーからデータをリロードするときです。ビュー モデルで addWidget() を手動で呼び出します。ストライプ バインディング ハンドラは適用されません。HTML ボタンをクリックすると、すべての行が同じ色で表示され、バインディングが発生し、ストライプが表示されます。
var ViewModel = function() {
self.addWidget();
});
このカスタム バインディングを js で手動で再適用することは可能ですか?
ありがとう
編集:
ストライプバインディングはこのように適用されます
<div data-bind="foreach: widgets, stripe: widgets, evenClass: 'light', oddClass: 'dark'">