2016-04-11 5 views
1

Ich versuche, einen Controller von einem anderen Controller aufzurufen. Beide sind in verschiedenen Modulen.Angular Controller Aufruf von verschiedenen Modul-Controller

var app = angular.module("WorkflowBuilder", ["ax.workflow.builder"]); 

WorkflowBuilder ist ein Modul, in dem Controller unten befindet:

var AxProjectsWeb = angular.module('WorkflowBuilder', ['angularModalService', 'sticky', 'leaflet-directive', 'ui.bootstrap', 'nya.bootstrap.select', 'ngSanitize', 'ui.select']); 

AxProjectsWeb.controller('KnowledgeController2',function(){}); 

So KnowledgeController2 Controller ist diejenige, die ich unten in einem Controller aufrufen möchten: i

(function (ax, ng) { 

    ng.module('ax.webagent.survey').directive('axSurveyFieldKnowledgeBase', AxSurveyFieldKnowledgeBase); // Name must be lowercase!!! 

    function AxSurveyFieldKnowledgeBase() { 

     return { 
      restrict: 'A', 
      scope: { 
       // We don't want long names :) 
       axC: '=axControl', // Bi-directional binding - to można zapodawac do kązdej dyrektywy - definiuje jak są ich wartości bindowane 
       li18n: '=axI18n', 
       isReadonly: '=axIsReadonly' 
      }, 
      link: link, 
      templateUrl: '../../../WorkflowBuilder/templates/survey/fields/AxSurveyFieldKnowledgeBase.html', 
      controllerAs: 'vm', 
      bindToController: true, 
      controller: ['$controller', '$scope', 'Helpers', controller] 
     } 
    } 

    function controller($controller, $scope, helpers) { 
     var KnowledgeController2 = $scope.$new(); 
     var knC = $controller('KnowledgeController2', { $scope: KnowledgeController2 }); 

    } 
}); 

Der Fehler empfangen ist:

Error: [ng:areq] http://errors.angularjs.org/1.4.4/ng/areq?p0=KnowledgeController2&p1=not%20a%20function%2C%20got%20undefined 
    at Error (native) 
    at http://localhost:54486/Scripts/angular.min.js:6:416 
    at pb (http://localhost:54486/Scripts/angular.min.js:22:41) 
    at Sa (http://localhost:54486/Scripts/angular.min.js:22:128) 
    at b.$get (http://localhost:54486/Scripts/angular.min.js:80:25) 
    at new controller (http://localhost:54486/WorkflowBuilder/js/survey/fields/axSurveyFieldKnowledgeBase.js:32:19) 
    at Object.e [as invoke] (http://localhost:54486/Scripts/angular.min.js:39:96) 
    at b.$get.Q.instance (http://localhost:54486/Scripts/angular.min.js:80:151) 
    at K (http://localhost:54486/Scripts/angular.min.js:61:140) 
    at http://localhost:54486/Scripts/angular.min.js:68:475 
+0

Sie können nicht einen Controller in einen anderen injizieren. Was genau musst du genau machen? Möglicherweise denken Sie über Architektur falsch nach. – inspired

Antwort

0

Der Fehler liegt in den 2 1. Schnipsel.

Sie deklarieren zweimal das gleiche Modul mit unterschiedlichen Abhängigkeiten.

Einer wird ignoriert, rate der ignorierte ist, wo Sie Controller definiert wurde. Verschieben Sie die Abhängigkeit ["ax.workflow.builder"] mit den anderen.

+0

Ich habe es getan. Es ändert nichts tatsächlich – kamilws

+0

Haben Sie das 2. Argument aus dem ersten Snippet entfernt oder haben Sie ein leeres Array? Wenn das Array leer ist, entfernen Sie es. Und prüfen Sie, ob Sie nicht das selbe für dieses Modul oder andere in Ihrer Datei getan haben, für jedes Modul müssen Sie nur ein angular.module mit den 2. Argument-Sets haben (die Abhängigkeiten) – Walfrat