2016-12-15 21 views
0

を参照しているときに問題が発生しましたが、私のプロジェクトにAngularJsディレクティブを実装しようとしていますが、この問題が発生しています。私はApp.js、ControllerA(それに指示文を含む)とControllerBを持っています。両方のコントローラは異なるフォルダにあります:ControllerAのFolderAとControllerBのFolderBAngularディレクティブ

htmlファイル内のControllerAで作成されたディレクティブをFolderBに呼び出したいとします。

問題は、私はアプリをロードしようとすると、角度がモジュールインジェクタ文句を言っていることです。

Uncaught Error: [$injector:modulerr] Failed to instantiate module private_home due to:(…)

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

'.directive( 'ControllerADirective'、[ 'controllerADirective'、機能(){':その中に注入するnothignがあります'controllerADirective'、function(){'。である必要があります。エラーについて尋ねるときは、正確で完全なエラーメッセージを投稿してください。メッセージはエラーが何であるかを知ることができるので、メッセージにはエラーがあります。 –

+0

宣言で指令名がcamelCasedであることを確認してください: '.directive( 'controllerADirective' ...' –

答えて

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 
    } 
}]); 
0

ディレクティブの定義に誤りがあります。 定義はこのようなものでなければなりません:

.directive('controllerADirective' , function(){ 
    return{ 
     template : 'This is a Directive', 
    } 
}); 

チェックこの作業Plunker https://plnkr.co/edit/VmHrDGFZo4brhBi1Ow0w?p=preview

関連する問題