2013-11-07 2 views
14

Я пытаюсь создать веб-приложение, которое будет использовать несколько угловых ng-приложений, и по крайней мере два могут использовать один и тот же код обслуживания (им НЕ ДОЛЖНО использовать общие данные, но они выполняют аналогичные функции), так как я могу избежать дублирования кода? То есть,Может ли Angularjs повторно использовать сервис по нескольким ng-приложениям

myApp1.factories.factory('myservice' [ function(){ 
    // stuff I dont want to repeat 
}]) 

... и на другой DIV на другую страницу в другом месте в приложении:

myApp2.factories.factory('myservice' [ function(){ 
    // stuff I dont want to repeat 
}]) 

Есть ли способ, чтобы получить два приложения, чтобы повторно использовать этот код услуги? Или считается, что лучшие практики имеют только одно ng-приложение для всего вашего html (даже если части могут быть независимыми) и просто делить вещи с помощью контроллеров?

Благодаря

+2

Конечно. То, как я это делал в прошлом, - это написать сервис как модуль для себя, а затем внедрить этот модуль в модули приложения, где я хочу его использовать. –

ответ

25
angular.module('myReuseableMod', []).factory('myReusableSrvc', function() { 
    // code here 
}); 

var App1 = angular.module('myApp1', ['myReuseableMod']); 
App1.controller('someCtrlr', ['$scope', 'myReusableSrvc', function($scope, myReusableSrvc) { 
    // controller code 
}]); // end someCtrlr 

var App2 = angular.module('myApp2', ['myReuseableMod']); 
App2.controller('someCtrlr', ['$scope', 'myReusableSrvc', function($scope, myReusableSrvc) { 
    // controller code 
}]); // end someCtrlr 
+0

Извините за поздний ответ - это сработало отлично. Большое спасибо – doug31415

+4

Теперь я должен добавить, что нельзя использовать '' 'для именования своих модулей, поскольку он предназначен для ядра ядра Angular. –

Смежные вопросы