DOJO 引用错误:未定义声明
DOJO reference error: declare is not defined
我正在遵循jsfiddle链接 http://jsfiddle.net/phusick/894af,当我将相同的代码放入我的应用程序中时,我收到"引用错误:声明未定义"。我在js文件之上有以下声明:
dojo.require("dojo._base.declare");
dojo.require("dojox.form.CheckedMultiSelect");
提前感谢您的帮助。
使用 Dojo AMD,您可以判断哪个模块映射到哪个参数,例如dojo/_base/declare
哪个模块映射到名为 declare
的变量。
但是,在非AMD代码中,您没有这种可能性。相反,您必须执行以下操作:
dojo.require('dojo._base.declare'); // Import
dojo.declare(/** Parameters */); // Use
实际上,如果我没记错的话,dojo/_base
中的模块已经在 Dojo 内核中,所以在这种情况下你可以省略dojo.require()
行。
对于以下 AMD 代码:
require(["dojo/_base/declare"], function(declare) {
var MyCheckedMultiSelect = declare(CheckedMultiSelect, {
/** Stuff */
});
});
您可以在非 AMD 中编写以下内容:
var MyCheckedMultiSelect = dojo.declare(CheckedMultiSelect, {
/** Stuff */
});
但是,请确保在运行 Dojo 1.7 时禁用异步模式,例如:
<script>
dojoConfig = {
parseOnLoad: false,
async: true
};
</script>
此规则适用于 dojo/_base
中的大多数(如果不是全部)模块和多个 DOM 模块,例如:
-
dojo/_base/xhr
: 方法如put()
、get()
、...变得dojo.xhrGet()
,dojo.xhrPut()
, ... -
dojo/_base/lang
: 方法如mixin()
、hitch()
、...变得dojo.mixin()
,dojo.hitch()
, ... -
dojo/dom
: 像byId()
这样的方法变得dojo.byId()
-
dojo/on
: 为此,您必须使用dojo.connect()
-
dijit/registry
: 像byId()
这样的方法变得dijit.byId()
- 。
但是,如果您使用的是 Dojo 1.7,那么即使所有其他代码都是用非 AMD 代码编写的,您可能也应该将代码保留在 AMD 中。最终,您将不得不将所有代码升级到AMD语法,如果您现在花时间将代码转换为非AMD并且稍后必须再次将其转换为AMD,那么您正在做两次相同的工作。
相关文章:
- 在setInterval函数之前声明时未定义对象
- 我们可以在初始化variable Angular JS时将变量值声明为未定义吗
- jQuery$.post可以在chrome、safari中工作,但不能在FF中工作(声明成功回调函数未定义)
- 函数声明未定义-原因
- DOJO 引用错误:未定义声明
- 如何区分未声明和未定义的 JavaScript 对象属性
- 为什么JS类内部声明的变量是“未定义的”
- "无法读取属性'id'未定义的“;解析工厂中声明的数组时
- 属性初始值设定项在声明之前未定义
- 为什么Javascript代码打印'未定义'即使变量被声明为全局变量
- 为什么来自.getJSON的名称在声明为列表(JavaScript / JQuery)的索引后仍未定义
- 声明后立即未定义的变量
- 从外部文件在打字稿中声明变量得到引用错误:..未定义
- ng-model 在声明$parent后保持未定义状态
- 如何避免 jshint 说 const 在声明之前在函数中被引用时是未定义的
- 数组中声明对象的函数未定义--NO!不是
- 为什么在使用返回的RequireJS函数中声明的Click绑定时未定义
- 在单个模块中声明时未定义控制器
- 在inspect元素中声明变量时未定义
- 为什么在调用document.ready()时未定义声明的函数