2016-03-25 3 views
2

У меня есть два модуля следующим образом.Как интегрировать два модуля в AngularJS

var module1 = angular.module('myApp',['ngAnimate','ngTouch'] 
    .controller('MainCtrl', function ($scope)){ 
    }); 

var module2 = angular.module('myApp',[]); 
    module2.controller('NameCtrl',function($scope)){ 

    }); 

И Html здесь

<body ng-app='myApp'> 
    <div ng-controller='MainCtrl'> //Code here</div> 
    <div ng-controller='NameCtrl'>//Code here</div> 
</body> 

Но это бросает ошибку, как это. 'NameCtrl' не существует

Пожалуйста, дайте мне знать, как исправить это. Заранее спасибо

ответ

0

Вам не нужно создавать два модуля.

Вы можете реализовать то, что вам нужно, следующим образом.

var myComponent = angular.module('myComponent',[]); 

myComponent.controller('MainCtrl',function($scope)){ 

}; 

myComponent.controller('NameCtrl',function($scope)){ 

}; 
1

Вам не нужны 2 модуля.

module1.controller('NameCtrl',function($scope)){ 

    }); 

является то, что вы хотите

0

Это один вы ищете?

var modules = angular.module('myApp',['ngAnimate','ngTouch'] 
    .controller('MainCtrl', function ($scope)){ 


}); 

    modules.controller('NameCtrl',function($scope)){ 

}); 
1

Вы объявляете два различных модуля с же именем. Вы не можете этого сделать.

angular.module метод jQuery-like геттер и сеттер. Если вы звоните с только одним параметром, он работает как getter, если вы вызываете его с помощью двух или более параметров, то он работает как setter.

Так что, если вам нужно (как кажется), чтобы зарегистрировать только другой рецепт (контроллер, сервис, ЕСС.), Но не новый модуль, что вам нужно сделать angular.module('ngApp').controller.

В противном случае, если вам нужно для нового модуля, необходимо присвоить ему другое имя и инициализировать ее вручную через angular.bootstrap

2

Правильная структура будет выглядеть следующим образом ...

var myApp = angular.module('myApp', ['ngAnimate','ngTouch']); 

myApp.controller('MainCtrl', function($scope){ 

}); 


myApp.controller('NameCtrl', function($scope){ 

}); 

Запомнить Каждый модуль похож на отдельное приложение. Каждый модуль должен быть уникальным именем, каждый модуль может иметь такие вещи, как их собственная конфигурация, контроллеры, службы и т. Д.

0

Вы не можете объявить два модуля с тем же . вы можете использовать разные controller, service, directive, factory и т. д. в том же модуле, поэтому вам может не понадобиться использовать другой модуль для простого приложения.

Если нужен другой контроллер в одном модуле а затем использовать как

var myModule = angular.module('myApp',['ngAnimate','ngTouch']); 

    myModule .controller('MainCtrl', function ($scope){ 
     //code 
    }); 

    myModule .controller('NameCtrl', function($scope){ 
     //code 
    }); 

Если нужен другой модуль, то нужно другое имя . Могут использоваться разные модули для тех приложений, которые основаны на модуле.

0

У вас не может быть двух модулей с тем же именем. Если ваш проект структурирован таким образом, это действительно мешает вам использовать только один модуль, вы могли бы это сделать.

var module2 = angular.module('myModule2',[]); 
module2.controller('NameCtrl',function($scope) {...}); 

var module1 = angular.module('myApp',['ngAnimate','ngTouch', 'myModule2'] 
    .controller('MainCtrl', function($scope){...}); 
0

Чтобы разложить приложение на несколько модулей, которые необходимо назвать приложение и компонент (ы) что-то другое и сделать ваше приложение зависит от компонента (ов).

var myComponent = angular.module('myComponent',[]); 
myComponent.controller('NameCtrl',function($scope)){}); 

var anotherComponent = angular.module('anotherComponent',[]); 
anotherComponent.controller('NameCtrl',function($scope)){}); 

var myApp = angular.module('myApp',['ngAnimate','ngTouch', 'myComponent', 'anotherComponent']); 
myApp.controller('MainCtrl', function ($scope)){}); 
0

Это немного сбивает с толку, потому что, согласно docs, объявляя module2 перезаписи уже существующего модуля MYAPP, что должно привести к MainCtrl быть не существующий. Рассмотрим пытаясь, что предложил Wainage, или, если вам действительно нужны два отдельных модуля, чтобы сделать что-то вроде этого:

var module1 = angular.module('myApp.module1', []); 

module1.controller('NameCtrl',function($scope){ 
    $scope.value = 'Name controller value'; 
}); 
var myApp = angular.module('myApp', [/*Other dependencies*/'myApp.module1']); 
myApp.controller('MainCtrl', function ($scope){ 
    $scope.value = 'Main value'; 
}); 
Смежные вопросы