直接在dojo结构中调用对象
我有一个js文件,它只是简单地使用dojo提供语句为对象提供名称空间。 它是一个简单的设置文件,将在整个应用程序中引用该文件进行设置。 因此,我不想专门为这些属性创建一个类(模块),而是想在我的appjs文件中给它一个名称空间和引用 这是我的直接在dojo结构中调用对象,dojo,Dojo,我有一个js文件,它只是简单地使用dojo提供语句为对象提供名称空间。 它是一个简单的设置文件,将在整个应用程序中引用该文件进行设置。 因此,我不想专门为这些属性创建一个类(模块),而是想在我的appjs文件中给它一个名称空间和引用 这是我的 dojo.provide('app'); dojo.require('settings'); dojo.ready(function(){ console.log("settings = ", settings.obj.prop1); });
dojo.provide('app');
dojo.require('settings');
dojo.ready(function(){
console.log("settings = ", settings.obj.prop1);
});
然后在我的设置中.js
dojo.provide('settings');
var obj = {
prop1:'property 1',
prop2:'http://fdsfsdfs'
}
console.log("settings module loaded");
当我在app.js中使用required时,它会显示settings.js已加载的内容,而控制台跟踪则会显示其已加载的内容。
但是,当我试图在设置内的obj上进行跟踪时,它会说未定义。您正在定义一个全局变量obj。您应该在需要的位置定义内部设置
settings.obj = { ... };
而不是
var obj = { ... }
您正在定义一个全局变量obj。您应该在需要的位置定义内部设置
settings.obj = { ... };
而不是
var obj = { ... }
为了澄清这一点,需要注意的是,dojo并没有神奇地将模块中定义的所有内容都命名为模块名称空间下的名称空间。人们通常希望您自己维护名称空间。因此,虽然
dojo.provide
确保您要在模块中定义的命名空间对象存在(例如settings.obj
),但您仍然需要在该模块(以及其他任何地方)中将其完整地称为settings.obj
。希望这能有所帮助。为了澄清这一点,需要注意的是dojo并没有神奇地将模块中定义的所有内容都命名为模块名称空间下的名称空间。人们通常希望您自己维护名称空间。因此,虽然dojo.provide
确保您要在模块中定义的命名空间对象存在(例如settings.obj
),但您仍然需要在该模块(以及其他任何地方)中将其完整地称为settings.obj
。希望有帮助。