0

这实际上是我在 Stack 中的第一个问题(长时间的听众等等)。

总的来说,我对 Javascript 还很陌生,对 Dojo 也很陌生。多年来一直在为此绞尽脑汁,但看不出我做错了什么。

我试图让查询通过此代码返回<p>DOM 中的所有标签。一切都很好。

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')

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

我想我很可能在这里浪费人们的时间,但我已经把头撞在键盘上几个小时了。这很可能是非常明显的事情!

提前致谢!

4

1 回答 1

2

该错误object has no method query是对问题的提示。该dojo/dom模块没有查询方法。相反,您需要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();
})
于 2013-10-25T16:02:09.553 回答