我希望有一个模态对话框出现,其中包含一些内容和按钮。对话框是否应该绑定到一些可观察的属性,对话框还必须有关闭按钮,一个在其主体内,另一个在右上角。我的主要目标是使用这些按钮关闭此模式表单,但对话框主体内的“取消”按钮无法按预期工作。
1)第一种方法:
在此示例中,对话框是使用静态对话框创建的,在“打开对话框”按钮上单击它会显示,如果单击右上角的 X 链接,它会关闭,但在“关闭”按钮单击时不会关闭,但是我设置了我的 observable为空。正如这篇精彩的解释中所描述的那样,我对这种方法非常确定。
摘自我的代码:
HTML:
<button data-bind="click: openDialog">Open dialog</button>
<div data-bind="with: dialogOpener">
<div data-bind="dialog: { data: $data, options: { close: Close } }">
<button data-bind="click: Save">Save</button>
<button data-bind="click: Close">Cancel</button>
</div>
</div>
JS:
self.dialogOpener = ko.observable();
self.openDialog = function () {
var data = {
Save: function() {
alert('Saved');
},
Close: function() {
alert('Closed');
self.dialogOpener(null);
}
}
self.dialogOpener(data);
}
完整的工作示例:http: //jsfiddle.net/cQLbX/
2) 第二种方法显示了我的对话框 html 是如何动态创建的,它的内容和结果与第一个示例相同。
摘自我的代码:
HTML:
<button data-bind="click: openDialog">Open dialog</button>
JS:
self.dialogOpener = ko.observable();
self.openDialog = function () {
var element = "";
element += '<div data-bind="with: $data">';
element += '<div data-bind="dialog: { data: $data, options: { close: Close } }">';
element += '<button data-bind="click: Save">Save</button>';
element += '<button data-bind="click: Close">Cancel</button>';
element += '</div>';
element += '</div>';
var data = {
Save: function() {
alert('Saved');
},
Close: function() {
alert('Closed');
self.dialogOpener(null);
}
}
self.dialogOpener(data);
ko.applyBindings(data, $(element)[0]);
}
完整的工作示例:http: //jsfiddle.net/6T3Ra/
我的问题是:
在这两个示例中,正文中的“取消”按钮都不起作用,对话框没有关闭,我做错了什么以及如何解决这个问题?
非常感谢!