我试图将AngularJs指令实现到我的项目中,但我遇到了这个问题。我有App.js,ControllerA(包含一个指令)和ControllerB。请注意,两个控制器都在不同的文件夹中:FolderA for ControllerA和FolderB for ControllerB
我想将一个html文件中在ControllerA中创建的指令调用到FolderB。
问题在于,当我尝试加载应用程序时,Angular抱怨模块注入器:
未捕获错误:[$ injector:modulerr]无法实例化模块 private_home由于:(...)
App.js
'use strict';
angular.module("private_home", ['private.controllers'])
.config(['$stateProvider', '$translateProvider', '$urlRouterProvider',
function($stateProvider, $translateProvider, $urlRouterProvider){
...
}]);
ControllerA
'use strict';
angular.module("private.controllers", [])
.controller('ControllerA' ,['$scope', function($scope){
$scope.users= [...];
.directive('ControllerADirective' ,['controllerADirective', function(){
return{
restrict : 'E',
templateUrl : 'find.htm',
controller : 'ControllerA',
controllerAs : 'CotrollerADirective',
bindToController: true
}
}]);
ControllerB (我知道这不是必要的,但以防万一......)
'use strict';
angular.module("private.controllers")
.controller('ControllerB' ,['$scope', function($scope){
}]);
我在html中使用此标记调用该指令:
< controller-a-directive>< / controller-a-directive>
提前致谢!!
答案 0 :(得分:0)
您没有关闭控制器声明。它们都是在模块本身上声明的,事实上,当您将控制器附加到指令时,它完全相反。
一旦附加到模块,控制器就可以附加到任何模板或指令,并为每个模板或指令创建一个新的实例。
可以在模块上声明后从任何控制器或模板调用指令,并再次使用每个声明创建一个新实例。
'use strict';
angular.module("private.controllers", [])
.controller('ControllerA' ,['$scope', function($scope){
$scope.users= [...];
}])
.directive('ControllerADirective' ,['controllerADirective', function(){
return{
restrict : 'E',
templateUrl : 'find.htm',
controller : 'ControllerA',
controllerAs : 'CotrollerADirective',
bindToController: true
}
}]);
答案 1 :(得分:0)
指令定义中有错误。 定义应该是这样的:
.directive('controllerADirective' , function(){
return{
template : 'This is a Directive',
}
});
检查此工作的Plunker https://plnkr.co/edit/VmHrDGFZo4brhBi1Ow0w?p=preview