为什么我不能访问这个JS函数?未定义不是一个功能?

skå*_*fan 2 javascript scope javascript-events angularjs

这可能是相当愚蠢的,但它现在已经困扰了我一段时间.试图让AngularJS得到一些东西,这就是杀了我.

在回调中我有这样的事情:

var xyz = {
  "modA"  : null,
  "modB"  : null,
  "modC"  : null
}
Run Code Online (Sandbox Code Playgroud)

然后我附上一些方法......

xyz.setModA = function(elementId) {

  var someConfig = {};
  // attach some kind of event callback on stateChange
  someConfig.events.onStateChange = this.helper;

  this.modA = new someObject(someConfig);      

}

xyz.setModC = function(vars) {
    ....
}

xyz.helper = function(event) {
  ....
  this.setModC(vars);
}
Run Code Online (Sandbox Code Playgroud)

当我们实例化的modA对象的状态发生变化时,会发生onStateChange事件,并正确触发我所拥有的xyz.helper方法,然后我立即得到一个Uncaught TypeError:undefined不是函数?出于某种原因,当事件触发时,它现在没有看到setModC方法?

Den*_*ret 6

this事件处理程序中的context()不是所需的对象.

为了确保正确的背景,改变

someConfig.events.onStateChange = this.helper;
Run Code Online (Sandbox Code Playgroud)

someConfig.events.onStateChange = this.helper.bind(this);
Run Code Online (Sandbox Code Playgroud)