여기 나와 함께 해주세요. AngularJS : 서비스 대 공급자 대 공장 과 같은 다른 답변이 있다는 것을 알고 있습니다 .
그러나 공장을 통해 서비스를 사용할 때 여전히 파악할 수 없습니다.
내가 공장에서 말할 수있는 것은 일반적으로 여러 컨트롤러가 호출 할 수있는 "공통"기능을 만드는 데 사용됩니다. 공통 컨트롤러 기능 만들기
Angular 문서는 공장보다 서비스를 선호하는 것 같습니다. 그들은 심지어 더 혼란스러운 공장을 사용할 때 "서비스"를 참조하기도합니다! http://docs.angularjs.org/guide/dev_guide.services.creating_services
그러면 언제 서비스를 이용할까요?
서비스를 통해서만 가능하거나 훨씬 쉬운 일이 있습니까?
무대 뒤에서 다른 일이 있습니까? 성능 / 메모리 차이?
다음은 예입니다. 선언 방법 외에는 동일하게 보이며 왜 내가 한 대 다른 대를하는지 알 수 없습니다. http://jsfiddle.net/uEpkE/
업데이트 : Thomas의 답변에서 서비스는 개인 메소드를 사용하여보다 복잡한 논리를위한 간단한 논리 및 팩토리 용임을 암시하는 것처럼 보이므로 아래의 바이올린 코드를 업데이트했는데 둘 다 개인 함수를 지원할 수 있습니까?
myApp.factory('fooFactory', function() {
var fooVar;
var addHi = function(foo){ fooVar = 'Hi '+foo; }
return {
setFoobar: function(foo){
addHi(foo);
},
getFoobar:function(){
return fooVar;
}
};
});
myApp.service('fooService', function() {
var fooVar;
var addHi = function(foo){ fooVar = 'Hi '+foo;}
this.setFoobar = function(foo){
addHi(foo);
}
this.getFoobar = function(){
return fooVar;
}
});
function MyCtrl($scope, fooService, fooFactory) {
fooFactory.setFoobar("fooFactory");
fooService.setFoobar("fooService");
//foobars = "Hi fooFactory, Hi fooService"
$scope.foobars = [
fooFactory.getFoobar(),
fooService.getFoobar()
];
}