从$ scope上的函数访问控制器内的实例函数

时间:2013-11-01 12:59:41

标签: javascript angularjs

我有一个看起来像这样的控制器:

function controller($scope)
{
  this.helper() = function()
  {
    // some processing
  };

  $scope.doSomething = function()
  {
    helper(); 
  };
}

当调用doSomething时,我收到一条错误,指出没有定义helper()。将'this'放在对helper()的调用之前不起作用,因为'this'在这里指的是$ scope而不是控制器实例。

我的问题是:有没有办法在范围内的函数内调用这样的本地帮助函数? (我知道我也可以在$ scope上放置helper(),但不要因为它只是一个方便的函数,而不是从视图中调用的东西。)

构造这样的代码的原因是为了便于单独测试helper()函数。

1 个答案:

答案 0 :(得分:0)

function controller($scope)
{
  this.helper() = function()
  {
    // some processing
  };
  var helperScope = this;

  $scope.doSomething = function()
  {
    helperScope.helper(); 
  };
}

当然,给它一个更具描述性的名称,但基本的想法是将this分配给你想要的范围内的变量。