0

独自のノックアウト モデル内にそれぞれ 4 つのネストされたリストがあるという問題があります。フォームにはページがあります。ページにはセクションがあります。セクションにはグループがあります。グループにはコントロールがあります。グループを除く各レベル (ページ、セクション、グループ、コントロール) は、独自のレベル内で並べ替えることができます。私が抱えている問題は、リストを含むテンプレートでカスタム バインディングを使用しようとしていることです。テンプレートを使用するにはカスタム バインディングが必要ですが、同じバインディングで要素を並べ替え可能にしたいとも考えていました。私はそれをうまく機能させましたが、コンテキストを失いました。コントロール要素で ko.dataFor を実行すると、必要なコントロール モデルではなく、セクション モデルが得られました。そして ko.ContextFor $parents 配列は、チェーンバックする必要があるときに空でした。ノックアウトのみの2.3デバッグバージョンにあると思われるrendertemplateforeachを使用しています。どんな助けでも大歓迎です。

各レベルに独自のバインディングが必要なのか、それともすべてが 1 つの大きなバインディング関数に組み込まれるのかはわかりません。

これがサンプルコードです。100% 機能していません。コントロールが表示されません。


サンプルコード <-- リンク

ko.bindingHandlers.renderSection = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
    $(element).sortable({
        handle: '.draggable',
        placeholder: "ui-state-highlight",
        connectWith: ".sectionSortable",
    }).disableSelection();
    return {
        controlsDescendantBindings: true
    };
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
    var options = ko.utils.unwrapObservable(valueAccessor())
    return ko.renderTemplateForEach(options.name, options.foreach, {}, element, bindingContext);
}

};

4

0 に答える 0