引用Angular指令时出现问题

时间:2016-12-15 21:38:25

标签: angularjs angularjs-directive

我试图将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>

提前致谢!!

2 个答案:

答案 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