我有以下代码:
function handlesomeObjDelete(someObj) {
query('#someObj-delete-link-'+someObj.id).on('click',function(){
var youSureDlg = new Dialog({
title: 'Delete someObj',
width:'250px',
id:'delete-someObj-dlg'+someObj.id,
content:'Are you sure you want to delete this someObj?'
});
var yesBtn = new Button({
label: 'Yes',
type: "button"
});
var noBtn = new Button({
label: 'No',
type: "button"
});
on(yesBtn,'click',function(){
request("someUrl/"+someObj.id, {
handleAs: "json",
type:'delete',
headers: {
"X-Requested-With": "",
"Content-Type": 'application/json; charset=utf-8'
}
}).then(function(){
alert('deleted');
});
});
on(noBtn,'click',function(){
youSureDlg.hide();
});
yesBtn.placeAt(youSureDlg);
noBtn.placeAt(youSureDlg);
//youSureDlg.startup();
youSureDlg.show();
});
}我得到了以下错误:
TypeError: refNode is null
packs[name] = packageInfo;
TypeError: youSureDlg.show is not a function
dojoSniffConfig我包括了dijit.Dialog。如果我再次尝试创建对话框,我会得到:尝试向id==someid注册小部件,但该id已经注册
知道有什么不对吗?
谢谢。
发布于 2014-01-20 14:57:39
试着这样做:
if(!youSureDlg){
var youSureDlg = new Dialog({
title: 'Title',
id: "someID",
content: "",
style: "width:250pt",
});
youSureDlg.show();
}
else {
youSureDlg.show();
}对话框是独立的,它是一个独立的盒子,不需要绑定到另一个div或其他地方。
看看这个:http://dojotoolkit.org/reference-guide/1.9/dijit/Dialog.html#dijit-dialog
希望它能帮到你。
UPDATE1:错误“试图注册.”当您想要启动一个没有被删除或在使用之后注销的小部件时,就会发生这种情况。您可以通过检查小部件是否已经存在来处理这一问题。检查我的密码-我已经更新了。
还可以查看下面的旧文章:Dojo dialog close event on X (top-right)和Dojo and unregistering widgets
你好,米里亚姆
发布于 2014-01-21 02:58:39
它似乎找不到您的源引用节点。这就是小部件代码锚定的地方。新Dialog 'yousuredlg‘中的第二个参数应该是html中的实际div。
例如。
<div>
<div id="yousuredlg"></div>
<button id="goButton">Go</button>
</div>JS
require(["dojo", "dijit", "dijit/Dialog", "dojo/on"], function (dojo, dijit, Dialog, on) {
var youSureDlg;
on(dojo.byId("goButton"), "click", function () {
if (!youSureDlg) {
youSureDlg = new Dialog({
title: 'Title',
width: '250px',
id: 'someid',
content: 'some content'
}, 'yousuredlg');
}
youSureDlg.show();
});
})https://stackoverflow.com/questions/21236825
复制相似问题