如何从Knockout控制和绑定多个jqueryUI对话框

时间:2013-03-05 10:59:32

标签: knockout.js

我希望能够从Knockout控制n jqueryUI对话

我已经看到你如何控制淘汰对话: Error with latest knockout and jquery ui dialog: cannot call prior to initialization

在该帖子中,对话在更新处理程序中进行控制:

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

对于如何使用observable来控制多个对话的状态是否有任何共识:

  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 个答案:

答案 0 :(得分: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/