Javascript Dojo1.10小部件不是构造函数
我想在另一个名为Javascript Dojo1.10小部件不是构造函数,javascript,dojo,widget,Javascript,Dojo,Widget,我想在另一个名为Core.js的Javascript文件中实例化以下自定义小部件 仪表板小部件 define([ "dojo/_base/declare", "dojo/_base/config", "dojo/ready", "dojo/_base/window", "dijit/_WidgetBase", "dijit/_TemplatedMixin", ], function( v_declare, v_config, v_ready, v_window,
Core.js
的Javascript
文件中实例化以下自定义小部件
仪表板小部件
define([
"dojo/_base/declare",
"dojo/_base/config",
"dojo/ready",
"dojo/_base/window",
"dijit/_WidgetBase",
"dijit/_TemplatedMixin",
], function(
v_declare,
v_config,
v_ready,
v_window,
v_WidgetBase,
v_TemplatedMixin,
) {
return v_declare("dashboard", [v_WidgetBase, v_TemplatedMixin], {
templateString: "<div>hello world</div>",
constructor: function(setting) {
console.log("smtg..");
},
buildRendering: function() {
var v_context = this;
var v_domNode = this.domNode;
this.inherited(arguments);
console.log('Expeerimental');
},
init: function() {
console.log('Expeerimental');
}
});
});
但是,在var dashboard=new p_dashboard()行代码>,我得到以下错误:
类型错误:p_仪表板不是构造函数
在HTMLDocument.\u 461
(dojo.js:8)“在domReady回调中”类型错误:p_仪表板不是构造函数
我似乎不明白它为什么会有这个错误。请告诉我一些想法?谢谢你我认为你的错误在模块的加载顺序中
在Core.js
中,ui/dashboard/dashboard
小部件是在Ready插件之后加载的,在callback函数中,它直接在主题
模块之后引用(知道dojo/domReady!未在calback BEASE中引用,因为通用约定不在回调函数中分配返回变量)
因此,尝试在dojo/domReady!
之前创建ui/dashboard/dashboard
,如果路径在dojo config中配置良好,dojo将正确实例化它
应该是这样的:
require([
"dojo/_base/config",
"dojo/_base/declare",
"dojo/dom",
"dojo/dom-class",
"dojo/dom-style",
"dojo/on",
"dojo/topic",
"ui/dashboard/dashboard",
"dojo/domReady!"
], .....
);
我想你的错误在模块的装载顺序上
在Core.js
中,ui/dashboard/dashboard
小部件是在Ready插件之后加载的,在callback函数中,它直接在主题
模块之后引用(知道dojo/domReady!未在calback BEASE中引用,因为通用约定不在回调函数中分配返回变量)
因此,尝试在dojo/domReady!
之前创建ui/dashboard/dashboard
,如果路径在dojo config中配置良好,dojo将正确实例化它
应该是这样的:
require([
"dojo/_base/config",
"dojo/_base/declare",
"dojo/dom",
"dojo/dom-class",
"dojo/dom-style",
"dojo/on",
"dojo/topic",
"ui/dashboard/dashboard",
"dojo/domReady!"
], .....
);
使用9个元素的数组调用require
,在函数中仅使用8个元素。最后(第8个)元素是dojo/domReady!
require([
"dojo/_base/config", // 1
"dojo/_base/declare", // 2
"dojo/dom", // 3
"dojo/dom-class", // 4
"dojo/dom-style", // 5
"dojo/on", // 6
"dojo/topic", // 7
"dojo/domReady!", // 8
"ui/dashboard/dashboard" // 9
], function(
b_config, // 1. dojo/_base/config
b_declare, // 2. dojo/_base/declare
b_dom, // 3. dojo/dom
b_domClass, // 4. dojo/dom-class
b_domStyle, // 5. dojo/dom-style
b_on, // 6. dojo/on
b_topic, // 7. dojo/topic
/*********************************************************
Where is my dojo/domReady!??????
*********************************************************/
p_dashboard // 8. ui/dashboard/dashboard
) {
// ...
});
总之,您必须做的是在require
的数组末尾移动“dojo/domReady”:
require([
"dojo/_base/config",
"dojo/_base/declare",
"dojo/dom",
"dojo/dom-class",
"dojo/dom-style",
"dojo/on",
"dojo/topic",
"ui/dashboard/dashboard",
"dojo/domReady!"
], function(
b_config, // dojo/_base/config
b_declare, // dojo/_base/declare
b_dom, // dojo/dom
b_domClass, // dojo/dom-class
b_domStyle, // dojo/dom-style
b_on, // dojo/on
b_topic, // dojo/topic
p_dashboard // ui/dashboard/dashboard
// dojo/domReady! is the self-called function
) {
// ...
});
使用9个元素的数组调用require
,在函数中仅使用8个元素。最后(第8个)元素是dojo/domReady!
require([
"dojo/_base/config", // 1
"dojo/_base/declare", // 2
"dojo/dom", // 3
"dojo/dom-class", // 4
"dojo/dom-style", // 5
"dojo/on", // 6
"dojo/topic", // 7
"dojo/domReady!", // 8
"ui/dashboard/dashboard" // 9
], function(
b_config, // 1. dojo/_base/config
b_declare, // 2. dojo/_base/declare
b_dom, // 3. dojo/dom
b_domClass, // 4. dojo/dom-class
b_domStyle, // 5. dojo/dom-style
b_on, // 6. dojo/on
b_topic, // 7. dojo/topic
/*********************************************************
Where is my dojo/domReady!??????
*********************************************************/
p_dashboard // 8. ui/dashboard/dashboard
) {
// ...
});
总之,您必须做的是在require
的数组末尾移动“dojo/domReady”:
require([
"dojo/_base/config",
"dojo/_base/declare",
"dojo/dom",
"dojo/dom-class",
"dojo/dom-style",
"dojo/on",
"dojo/topic",
"ui/dashboard/dashboard",
"dojo/domReady!"
], function(
b_config, // dojo/_base/config
b_declare, // dojo/_base/declare
b_dom, // dojo/dom
b_domClass, // dojo/dom-class
b_domStyle, // dojo/dom-style
b_on, // dojo/on
b_topic, // dojo/topic
p_dashboard // ui/dashboard/dashboard
// dojo/domReady! is the self-called function
) {
// ...
});
这能解决你的问题吗?这能解决你的问题吗?