commonjs 中的 addEventListener

addEventListener in commonjs

我需要你的帮助。假设我有 2 个文件。

文件 1

function test(){
   this.view= Ti.UI.createView({
            backgroundColor : 'white'
    });
}
module.exports = test;

在文件 2

 var view = Ti.UI.createView();
 var a = require('file1');

 a = new test();
 view.add(a.view);
 //no problem

现在我想将 eventListeners 添加到视图中。

文件2

 var view = Ti.UI.createView();
 var a = require('file1');
 a=new test();
 view.add(a.view);

 a.view.addEventListener('click',function(){
      a.view.backgroundColor = 'red';
 });

//no problem with this too

但是有没有办法添加事件监听器以在文件1中查看?像这样

文件 1

 function test(){
     this.view = Ti.UI.createView({
           backgroundColor : 'white'
     });

     this.view.addEventListener('click',function(){
              this.view.backgroundColor = 'red';
     });
 }

这样做会出现以下错误

 Uncaught TypeError: Cannot set property 'backgroundColor' of undefined

事件侦听器与视图和test函数相关。所以当你这样做时:

this.view.addEventListener('click',function(){
          this.view.backgroundColor = 'red';
 });

您正在尝试访问 this.view 内的 view 内的 backgroundColor

在附加事件之前捕获外部范围并在执行点击时使用它:

function test(){
     var _this = this;

     this.view = Ti.UI.createView({
         backgroundColor : 'white'
     });

     this.view.addEventListener('click',function(){
         _this.view.backgroundColor = 'red';
     });
 }

这应该会为您提供您期望的正确参考。