0

Knockout から n 個の jqueryUI ダイアログを制御できるようにしたい

ここでノックアウトからダイアログを制御する方法を見てきました: 最新のノックアウトと jquery ui ダイアログのエラー: 初期化の前に呼び出すことはできません

その投稿では、ダイアログは更新ハンドラーで制御されます。

 update:ko.utils.unwrapObservable(allBindingsAccessor().dialogVisible);
              $(element).dialog(shouldBeOpen ? "open" : "close");

次のように、オブザーバブルを使用して複数のダイアログの状態を制御する方法についてコンセンサスはありますか:

  isAddOpen: KnockoutObservableBool = ko.observable(false);
    isEditOpen: KnockoutObservableBool = ko.observable(false);

    openEditDialogue(editingItem) {
        this.editingItem = editingItem;
        this.isEditOpen(true);
    }
    closeEditDialogue(editingItem) {
        this.editingItem = editingItem;
        this.isEditOpen(true);
    }

    openAddDialogue() {
        this.isAddOpen(true);
    }
    closeAddDialogue() {
        this.isAddOpen(false);
    }

別のバインディング ハンドラーを使用してロジックを繰り返すこともできますが、その 1 つだけに固執することをお勧めします。

4

1 に答える 1

1

バインディングは、バインディングを含む要素に固有のダイアログを開いたり閉じたりすることを扱います。したがって、異なるブール値にマップする個別の要素にバインディングを配置できます。

<div data-bind="dialog: {autoOpen: false, title: 'Dialog test' }, dialogVisible: isOpen">dialog</div>

<div data-bind="dialog: {autoOpen: false, title: 'Dialog test 2' }, dialogVisible: isOpen2">dialog 2</div>

サンプルは次のとおりです:http://jsfiddle.net/rniemeyer/RvH6L/

于 2013-03-05T14:36:31.067 に答える