我对回调方法和局部变量有一个特殊问题:
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
正在做什么,但似乎我不会回到我要离开的地方?
答案 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
指向您的实际实例。