Dojo:如何访问&x27;这';从一个街区里面?

Dojo:如何访问&x27;这';从一个街区里面?,dojo,Dojo,如果我是从onclick事件调用函数,我通常会使用this来访问触发事件的元素。但是如果我使用的是dojo require,那么这个在require中是不可访问的 HTML: 如何访问require中的此?有几种方法可以解决您的问题。最常见的解决方案是只对脚本块使用一个require,并在require回调中包含所有定义 require(['dojo/on','dojo/dom','dojo/dom-class'],function(on,dom,domClass){ var butto

如果我是从onclick事件调用函数,我通常会使用
this
来访问触发事件的元素。但是如果我使用的是dojo require,那么
这个
在require中是不可访问的

HTML:


如何访问require中的

有几种方法可以解决您的问题。最常见的解决方案是只对脚本块使用一个require,并在require回调中包含所有定义

require(['dojo/on','dojo/dom','dojo/dom-class'],function(on,dom,domClass){
    var button = dom.byId ("someButton");
    on (button, "click", doSomething);
    function doSomething (event) {
        console.log (this.id); // someButton
        console.log (this.id);
        domClass.add (this, "clicked");
    });
});

另一个要考虑的是dojo/on模块将一个标准化的事件对象传递给事件处理程序。因此,在本例中,

doSomething()
将传递一个
事件
对象,您可以从中获取实际单击的dom元素。

有几种方法可以解决您的问题。最常见的解决方案是只对脚本块使用一个require,并在require回调中包含所有定义

require(['dojo/on','dojo/dom','dojo/dom-class'],function(on,dom,domClass){
    var button = dom.byId ("someButton");
    on (button, "click", doSomething);
    function doSomething (event) {
        console.log (this.id); // someButton
        console.log (this.id);
        domClass.add (this, "clicked");
    });
});
 require (["dojo/dom-class"], dojo.hitch(this,function (domClass) {
        console.log (this.id); // undefined
        domClass.add (this, "clicked");
    }));

另一个要考虑的是dojo/on模块将一个标准化的事件对象传递给事件处理程序。因此在本例中,

doSomething()
将被传递一个
事件
对象,您可以从中获取实际单击的dom元素

 require (["dojo/dom-class"], dojo.hitch(this,function (domClass) {
        console.log (this.id); // undefined
        domClass.add (this, "clicked");
    }));
require中的函数是回调函数,因此它的作用域是窗口。当它返回时,您可以使用bind或dojo.hitch来更改作用域


require中的函数是回调函数,因此它的作用域是窗口。当它返回时,您可以使用bind或dojo.hitch来更改作用域。

谢谢,这非常有效。如果我像这样在require块中定义了一个函数,我能从require块之外访问它吗?比如在另一个javascript文件中?谢谢,这非常有效。如果我在这样一个require块中定义了一个函数,我能从require块之外访问它吗?比如在另一个javascript文件中?