当我调用父母的函数时,ESlint报告错误

时间:2016-04-20 12:56:23

标签: angularjs eslint

在我的子控制器中,我使用$ scope从其父级调用一个函数。一切正常,但当我运行gulp服务时,我得到一个ESLint错误

  

您不应在控制器中设置$ scope的属性。使用   controllerAs语法并将数据添加到“this”

所以我的问题是如何以正确的方式处理这个问题?

以下是我详细解释的内容:

我在Angular项目中使用UIRouter。我已经声明了父状态及其子状态。

$stateProvider.state('app.parent', {
  url: '/parent',
  temolateUrl: 'parent.html',
  contorller: 'MyParentController as parentCtrl'
}


$stateProvider.state('app.parent.child', {
  url: '/child',
  temolateUrl: 'child.html',
  contorller: 'MyChildController as childCtl'
}

在我的父控制器中,我将我的函数添加到$ scope,以便可以从state的子节点访问该函数。

function MyParentController() {
  $scope.myParentFunction = myParentFunction;
  function myParentFunction(){
    //do something
  }
}

在我的孩子状态(控制器)中,我调用此功能。

function MyChildController(){
...
  $scope.myParentFunction();
...
}

一切正常但是当我运行gulp服务时,我得到一个ESLint错误

  

您不应在控制器中设置$ scope的属性。使用   controllerAs语法并将数据添加到“this”

所以我的问题是如何以正确的方式处理这个问题。

1 个答案:

答案 0 :(得分:0)

你应该使用controllerAs语法

https://toddmotto.com/digging-into-angulars-controller-as-syntax/

function MyChildController($scope){
    var vm = this;
    vm.scope = $scope;
    vm.scope.myParentFunction();    
}