我有以下代码
var dlg = new dijit.Dialog({
"title": "my dialog",
"style": "width: 800px;",
"id": "myDlg",
"href":"some url"
}).placeAt(dojo.body());
var actionBar = dojo.create("div", {
"class": "dijitDialogPaneActionBar"
}, dlg.containerNode);
new dijit.form.Button({
"label": "Ok"
}).placeAt(actionBar);
new dijit.form.Button({
"label": "Cancel"
}).placeAt(actionBar);
dlg.show();
这个代码对话框显示的是url内容但是动作栏没有显示,当我用一些静态内容替换href时,动作栏工作正常。可能是什么问题?
答案 0 :(得分:1)
对dojo对话框使用“href”时,每次打开/显示对话框时,href中的内容都会加载为ajax调用。所以,这里发生的是首先添加操作栏和按钮,然后将href加载到Dialog中,它会覆盖现有的操作栏和按钮-EVERYTIME !! 因此,为了实现这一点,您可以确保在href加载完成后添加操作栏。为此,我们使用“show”方法返回的Deferred对象。
var dlg = new dijit.Dialog({
"title": "my dialog",
"style": "width: 800px;",
"id": "myDlg",
"href":"some url"
}).placeAt(dojo.body());
dlg.show().then(function() {
if(dlg.firstTime) {
var actionBar = dojo.create("div", {
"class": "dijitDialogPaneActionBar"
}, dlg.containerNode);
new dijit.form.Button({
"label": "Ok"
}).placeAt(actionBar);
new dijit.form.Button({
"label": "Cancel"
}).placeAt(actionBar);
dlg.firstTime=true;
}
});
但是,我建议不要使用这种方法,因为每次都要创建动作栏和按钮小部件。所以,我已经在对话框对象中添加了一个参数“firstTime”来避免它。因此,操作栏和按钮只能打包一次。 希望这会有所帮助。