我希望能够从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);
}
我可以用另一个绑定处理程序重复逻辑,但我更愿意只关注那个。
答案 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>