除非在全局范围内,否则不能使用dojo / query

时间:2013-10-25 15:57:57

标签: javascript dojo

这实际上是我在Stack中的第一个问题(长时间倾听者和所有这些)。

我对Javascript很新,对Dojo来说肯定是新手。多年来我绞尽脑汁,但看不出我做错了什么。

我正在尝试通过此代码获取查询以返回DOM中的所有<p>标记。一切都很好。

define ([
"dojo/dom",
"dojo/query"
], function (dom) {
return {
    changeParagraphs: function() {
        var nodeList = dom.query('p');
        console.log(nodeList);
    }
   }
});

请原谅布局,仍然习惯这个。 如果我在这里打电话询问......

require(["custom/q3",
         "dojo/domReady!",
         "dojo/query"], function(myObject){
    myObject.changeParagraphs();
})

我得到一个对象没有方法查询错误。

如果不是

  

var nodeList = dom.query('p')

我打电话......

  

var nodeList = dojo.query('p')

一切都很好。为什么?我知道使用全局(实际上是任何语言)的不良做法,但是我做错了什么?我无意使用全球!

我想我最有可能在这里浪费人们的时间,但我现在一直在敲打键盘几个小时。这很可能是非常明显的事情!

提前致谢!

1 个答案:

答案 0 :(得分:2)

错误object has no method query是一个关于问题的提示。 dojo/dom模块没有查询方法。相反,您需要在define函数回调中公开dojo/query方法:

define(["dojo/dom", "dojo/query"], function (dom, query) {
    return {
        changeParagraphs: function () {
            var nodeList = query('p');
            console.log(nodeList);
        }
    }
});

然后在你的要求中:

require(["custom/q3", "dojo/domReady!"], function (myObject) {
    myObject.changeParagraphs();
})