亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

dijit.dialog 不是構造函數

dijit.dialog 不是構造函數

陪伴而非守候 2022-06-09 19:31:14
我有一個舊的 ZendApplication (ZF1),現在我嘗試將此應用程序轉移到 ZF3。在應用程序中,我使用了一些 Dojo 元素,例如 Helpdialog。在 ZF3 中,Zend 不直接支持 Dojo,所以我直接使用 Dojo,而沒有 Zend 交互。因此,在我的布局視圖中,我像這樣加載 Dojo:<script src="<?= $this->basePath()?>/assets/custom/js/dojo/dojo/dojo.js" data-dojo-config="async: true,isDebug: true,parseOnLoad: true">require ([    'dijit/Dialog',    'dijit/form/Button',    'dijit/form/SimpleTextarea',....  'dojox/widget/Standby',  'dojo/domReady!',],));這是我要使用的代碼:       require (['dojo/domReady!','dijit/Dialog']);          function showHelp(id,help) {                dojo.xhrGet({                    url: "http://localhost/NeuesProjekt/public/test/test",                    //url:"http://localhost/NeuesProjekt/public/", // baseUrl + "/help/index/charkey/" + id,                    load: function(data) {                            helpDlg = new dijit.Dialog({                                title: "help",                                content: "data",                                style: "width: 550px;"                            });                            helpDlg.show();                    },                    error: function(error) {                            var data = "An unexpected error occurred: " + error;                            helpDlg = new dijit.Dialog({                                title: "help",                                content: "data2",                                style: "width: 550px"                            });                            helpDlg.show();                    }                });            };它會一直工作,直到應用程序到達new dijit.Dialog那里我得到錯誤dijit.dialog is not a constructor我的錯誤在哪里?編輯:在我看來,我在這樣的錨點中調用函數:' href="javascript:showHelp('Help')">HELP'EDIT2:我 F12 調試它告訴我沒有定義對話框,但找到了 dijit。
查看完整描述

2 回答

?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

似乎您混合了 1.7 之前的 dojo 樣式和 1.7 + one(請參閱此處以了解在 1.7 之前和之后使用 require 的示例)。因為我看到'async: true',所以您使用的是 od dojo > = 1.7 版本。請參閱此處如何正確使用 dojo AMD 加載程序。你使用 require 語句的方式,你不確定使用它們時是否會加載相應的模塊(它是異步的)。這可能是您在新 dijit.dialog 上收到錯誤的原因。正確的方法是:


require ([dijit/Dialog, dojo/domReady!], function(Dialog){

    ...

    var helpDlg = new Dialog({...});

    helpDlg.show();

});

注意約定是把dojo/domReady! 最后(見這里)。另請注意,不推薦使用 dojo.xhrGet(...)(請參見此處)...這并不意味著它不起作用(我不熟悉 1.7 之前的樣式)。


編輯以在下面回答您的評論:


require ([dijit/Dialog, dojo/domReady!], function(Dialog){

    var showHelp = function(id, help){

        ...

        var helpDlg = new Dialog({...});

        ...

        helpDlg.show();

        ...

    }

    showHelp(1, 'please help me!');

});


查看完整回答
反對 回復 2022-06-09
?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

我發現了我的錯誤。我只更改了 Dojo 的要求,所以它會起作用: dojo.require ('dijit.form.Button');



查看完整回答
反對 回復 2022-06-09
  • 2 回答
  • 0 關注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號