首页 文章

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

提问于
浏览
0

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

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

onKeyEnter直接调用readSuccessCallback时,"Test2"值设置正确

如果从OData.read(SAP Kapsel 第三方)调用readSuccessCallback方法,则会发生异常:

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

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

2 回答

  • 2

    试试这个:

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

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

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

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

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

相关问题