繁体   English   中英

如何在创建dojo AMD模块后调用按钮单击事件

[英]how to call the button click event in post create dojo AMD module

我在dojo AMD模块中创建了新的dojo应用程序。 我需要在一个脚本文件中调用我的按钮单击,然后单击另一个脚本文件。 但是当我点击按钮时,它显示了空值错误,我的示例代码如下:

我的功能文件代码是:

define(["dojo/_base/declare"  . . .], // defaultDuration
    function (declare . . ) { 


    var mycode = declare([ContentPane, _WidgetBase, _TemplatedMixin], { 

        toggle: function () {
        //here my function 
        },  
        constructor: function (params /) { 
        },

        postCreate: function () { 
        }
    });

    return mycode;
});

按钮点击事件:

define(["dojo/_base/declare" . . . ],
    function (declare . . .) {

        var evet = declare([dijit._WidgetBase, dijit._TemplatedMixin], { 
            _div: null, 

            constructor: function (div) {
                this._div = div; 
            },

            postCreate: function () { 
                this.inherited(arguments);

                var markbutton = new Button({
                    label: "Mark", 
                }, this.markButtonNode); 

                markbutton.on("click", function (evt) {
                    this._div.toggle(); // error here _div is undefined. 
                });
            }
        });

        return evet;
    });

您需要搭上范围,以便this工作。

markbutton.on("click", lang.hitch(this, function (evt) {
    this._div.toggle(); 
}));

好吧,您可以将范围存储在变量中,并在函数内部访问此变量。

尝试这个:-

          var _this = this;
          markbutton.on("click", function (evt) {
                _this._div.toggle(); 
            });

在这种方法中,不需要“ dojo / _base / lang” ...

希望这个能对您有所帮助..

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM