Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
直接在dojo结构中调用对象_Dojo - Fatal编程技术网

直接在dojo结构中调用对象

直接在dojo结构中调用对象,dojo,Dojo,我有一个js文件,它只是简单地使用dojo提供语句为对象提供名称空间。 它是一个简单的设置文件,将在整个应用程序中引用该文件进行设置。 因此,我不想专门为这些属性创建一个类(模块),而是想在我的appjs文件中给它一个名称空间和引用 这是我的 dojo.provide('app'); dojo.require('settings'); dojo.ready(function(){ console.log("settings = ", settings.obj.prop1); });

我有一个js文件,它只是简单地使用dojo提供语句为对象提供名称空间。 它是一个简单的设置文件,将在整个应用程序中引用该文件进行设置。 因此,我不想专门为这些属性创建一个类(模块),而是想在我的appjs文件中给它一个名称空间和引用

这是我的

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
。希望有帮助。