未捕获的TypeError:无法设置undefined的属性“model”

时间:2016-08-04 10:29:22

标签: typescript angular

我对回调方法和局部变量有一个特殊问题:

 export class Test {

   model: Article;

   onKeyEnter(value: string) {
    this.model.maktx = "Test1";

    //This is not working
    this.find(value);

    // Direct call is working
    //this.readSuccessCallback(null, null);
  }

  find(nr) {

    [..other stuff]

    OData.read(request, this.readSuccessCallback, this.errorCallback);
  }

   readSuccessCallback(data, response) {  
     this.model.maktx = "Test2";
  }
}

当我从"Test2"

直接致电readSuccessCallback时,onKeyEnter值设置正确

如果从readSuccessCallback调用OData.read方法 (SAP Kapsel第三方)发生了一个例外:

  

未捕获的TypeError:无法设置未定义的属性“model”。

有谁知道发生了什么?我不确切知道OData.read正在做什么,但似乎我不会回到我要离开的地方?

2 个答案:

答案 0 :(得分:2)

试试这个:

OData.read(request, this.readSuccessCallback.bind(this), this.errorCallback.bind(this));

答案 1 :(得分:0)

在我看来,您的readSuccessCallback已被调用,但this已成为undefined。当您在严格模式下工作时可能就是这种情况(我相信这是1.8的默认模式)。

我不能在这里测试,但是定义你的回调如下:

public readSuccessCallback(data, response) = (data, response) => {
  this.model.maktx = "Test3";
}

应该引导this指向您的实际实例。