如果我有以下内容:
myapp.directive('directivename', ...
return {
...
restrict: 'E',
controller: MyController,
...
}
function MyController($scope, $somethingelse) {
// Contents of controller here
}
);
如何对其进行修改以使MyController
在缩小时不会被销毁?
我收到以下错误:
错误:[$ injector:unpr]未知提供者:eProvider< - e
答案 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) {
}
}