как вызвать событие нажатия кнопки в модуле post create dojo AMD

Я создал новое приложение dojo в модуле dojo AMD. Мне нужно вызвать щелчок моей кнопки в одном файле сценария в другой файл сценария. но когда я нажимаю кнопку, она показывает ошибку нулевого значения, мой пример кода приведен ниже:

Мой код файла функции:

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;
    });

person US_User    schedule 02.09.2013    source источник
comment
ты нашел решение?   -  person Guna    schedule 01.09.2016


Ответы (2)


Вам нужно прицепить прицел, чтобы this заработало.

markbutton.on("click", lang.hitch(this, function (evt) {
    this._div.toggle(); 
}));
person Craig Swing    schedule 02.09.2013

ну, вы можете сохранить область действия в переменной и получить доступ к этой переменной внутри вашей функции....

Попробуй это:-

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

При таком подходе не нужно требовать "dojo/_base/lang"...

Надеюсь, что это поможет вам..

person Vikash Pandey    schedule 04.09.2013