0

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

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

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

调用 doSomething 时,我收到一条错误消息,提示未定义 helper()。将 'this' 放在对 helper() 的调用前面也不起作用,因为这里的 'this' 指的是 $scope 而不是控制器实例。

我的问题是:有没有办法从范围内的函数中调用此类本地辅助函数?(我知道我也可以将 helper() 放在 $scope 上,但宁愿不这样做,因为它严格来说是一个便利函数,而不是从视图中调用的东西。)

像这样构造代码的原因是为了方便将 helper() 函数与单元测试分开测试。

4

1 回答 1

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

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

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

于 2013-11-01T13:01:18.557 回答