0

要素ごとにサーバー側が既にある場合、クライアント側でどのようにすればよいですか?

両方を行った後、要素が2倍になります。

init で子要素を削除するバインディング ハンドラーを作成することにより、古いバージョンのノックアウトを使用して修正します。誰でもこれをノックアウト 2.1 で動作させることができますか?

http://jsfiddle.net/4f9N2/4/

var viewModel = {
    countries : [
        { name: 'UK' },
        { name: 'France' },
        { name: 'USA' }
    ]
}

ko.bindingHandlers.serverForEach = {
    init: function(element, valueAccessor, allBindingsAccessor, viewModel) {
        // clear the list first
        $(element).children().remove();
    },
    update: function(element, valueAccessor, allBindingsAccessor, viewModel) { 
        ko.bindingHandlers['template'].update(element, valueAccessor, allBindingsAccessor, viewModel);
    }
};

ko.applyBindings(viewModel);
4

1 に答える 1

3

templateバインドには、init呼び出す必要がある関数も含まれています。templateまた、ハンドラー関数をラップする方法を簡素化できます。

ko.bindingHandlers.serverForEach = {
    init: function(element) {
        // clear the list first
        $(element).children().remove();
        return ko.bindingHandlers.template.init.apply(this, arguments);
    },
    update: ko.bindingHandlers.template.update
};

例: http://jsfiddle.net/mbest/4f9N2/12/

于 2013-04-03T03:08:24.320 に答える