使用指令控制器进行角度缩小?

时间:2014-12-31 22:49:01

标签: javascript angularjs angularjs-directive minify angularjs-controller

如果我有以下内容:

myapp.directive('directivename', ...

    return {
        ...
        restrict: 'E',
        controller: MyController,
        ...
    }

    function MyController($scope, $somethingelse) {
        // Contents of controller here
    }
);

如何对其进行修改以使MyController在缩小时不会被销毁? 我收到以下错误:

  

错误:[$ injector:unpr]未知提供者:eProvider< - e

3 个答案:

答案 0 :(得分:20)

可以使用显式依赖注释来解决它。你有什么隐含的注释,在缩小时会导致问题。您也可以使用$inject或内联数组注释来注释指令中的依赖项。

MyController.$inject = ['$scope', '$somethingelse'];

function MyController($scope, $somethingelse) {
    // Contents of controller here
}

或者在指令中:

return {
    ...
    restrict: 'E',
    controller: ['$scope', '$somethingelse', MyController],
    ...
}

或者使用.controller语法

注册您的控制器
app.controller('MyController', ['$scope', '$somethingelse', MyController]);

并在指令中设置控制器名称而不是构造函数。

return {
    ...
    restrict: 'E',
    controller: 'MyController',
    ...
}

您还可以查看 ng-annotate ,而不需要使用显式注释。

答案 1 :(得分:1)

通常,使用以下方法:

myapp.controller('MyController', ['$scope', '$somethingelse', function($scope, $somethingelse) {
  ...
}]);

避免此类问题。

答案 2 :(得分:0)


您可以这样使用:

return {
    restrict: 'EA',
    template: ...,
    scope: {},
    controller: ["$scope","$rootScope", function ($scope,$rootScope) {
       //code here
    }],
    link: function (scope) {
    }
}