在回调内调用函数会在Angular中引发错误

时间:2017-06-14 13:31:36

标签: javascript cordova

我使用Cordova plugin,它有两个回调函数:

window.plugins.screensize.get(this.screensize_success, this.screensize_error);

接下来,在成功回调中,我这样做:

screensize_success(result)
{
    console.log(result); // <--- works fine
    console.log("##### height: "+result.height); // <--- works fine
    this.get_highest(result); // <--- throws an error
}
get_highest(result)
{
  return Math.max(result.height,result.width);
}

我收到此错误:

  

未捕获(承诺):TypeError:无法读取属性&#39; get_highest&#39;   为null

我做错了什么?

2 个答案:

答案 0 :(得分:2)

调用回调时,您正在丢失this上下文。

解决此问题的最简单方法是将回调绑定到this

window.plugins.screensize.get(this.screensize_success.bind(this), this.screensize_error.bind(this));

答案 1 :(得分:0)

我个人更喜欢将函数设置为变量,以便在程序中轻松重用,例如:

var get_highest = function (result)
{
  return Math.max(result.height,result.width);
}

并在没有它的情况下调用它:

get_highest(result);