반응형
controller 는 한가지 뷰에만 집중해야 한다.
애플리케이션 전체에서 공유해야 할 기능이 필요할때 서비스를 사용한다.
컨트롤러와 컨트롤러는 직접 커뮤니케이션 해서는 안된다.
따라서 컨트롤러들이 정보를 공유하게 하려면 서비스 를 사용 해야한다.
서비스는 $provide 의 내장 서비스에 의해 애플리케이션에 등록함.
대부분의 경우 angular.module 객체를 이용하는 방법이 수월하다.
$provide 객체:
module.value
module.service
module.factory
module.provider
와 같은 메서드를 제공한다.
example:
서비스로 사용할 객체를 선언한다.
myModule.value 메서드를 통해 애플리케이션이 서비스로서 활용할 수있는 값을 등록한다.
STORY_TYPES 라는 값으로 객체의 배열을 전달 하도록 한다.
myModule.value(‘STORY_TYPES’,[
{name: ‘기능’},
{name: ‘개선'},
{name: ‘버그’},
]);
사용 예제:
angular.module(‘gavin.storyboard’)
.controller(‘StoryboardCtrl’,
#STORY_TYPES 서비스를 StoryBoardCtrl 컨트롤러에 주입한다.
function(STORY_TYPES) {
var myStory=this;
#코드를 통해 서비스 객체를 컨트롤러에 등록한다.
myStory.types=STORY_TYPES;
});
뷰에서 스토리 타입 서비스를 사용 할 수있도록 myStory.types=STORY_TYPES
스토리 타입을 서비스로 분리 할 경우 한번정의된 서비스는 어떤 것과도 어디서든, 활용이 가능 하다.
서비스는 오직 하나의 인스턴스만 생성된다.
서비스는 필요한 경우에만 로드 된다.
서비스의 종류:
value,constant,service,factory,provider
(출처: Angular in Action)
반응형