我需要你的帮助。可以说我有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添加到视图中。
file2的
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中添加eventlisteners?像这样的东西
文件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
答案 0 :(得分:3)
事件侦听器与视图和test
函数相关。所以当你这样做时:
this.view.addEventListener('click',function(){
this.view.backgroundColor = 'red';
});
您正试图访问backgroundColor
内view
内的this.view
。
在追加事件之前捕获外部范围,并在执行单击时使用它:
function test(){
var _this = this;
this.view = Ti.UI.createView({
backgroundColor : 'white'
});
this.view.addEventListener('click',function(){
_this.view.backgroundColor = 'red';
});
}
这应该为您提供您期望的正确参考。