2013-11-22 3 views
5

는 Angular.js 'Controller docs과가 건너 발견 읽고 :각도 문서 : 어떻게 컨트롤러간에 상태 비 저장/상태 저장 코드를 공유 할 수 있습니까?

컨트롤러를 통해 무 상태 또는 상태 코드를 공유 - 사용 각도 서비스를 대신.

그러나 이것은 나에게 불확실합니다. 컨트롤러간에 상태 비 저장 코드와 상태 저장 코드를 공유하는 방법은 무엇입니까? 아니면 "코드"가 여기에 무엇을 의미합니까? 모델? 게다가 컨트롤러는 내가 이해하는 한 서로를 참조하지 않는다. 누군가 나를 위해 물건을 정리할 수 있습니까 (다른 사람들) 제발? 감사.

+0

여기를 참조하십시오 http://stackoverflow.com/questions/13180293/angularjs-multiple-uses-of-controller-and-rootscope/13181133#13181133 서비스를 사용하여 상태를 유지하는 방법 (이 경우 메뉴) (동일한 컨트롤러의 두 개 이상의 다른 컨트롤러 일 수도 있음). –

답변

2

그들이 말하는 것은 컨트롤러간에 또는 라우트 변경간에 데이터를 "유지"하는 방법 중 하나 일 수 있다고 생각합니다. 이를 수행하는 한 가지 방법은 rootScope에 넣는 것이고, 다른 하나는 서비스를 사용하는 것입니다. 이 같은 서비스를 정의하는 경우 :

.factory("MyDataObject", function() { 
    return {}; 
}) 

그런 다음 MyDataObject 어디서나 동일한 개체 당신이 데이터 기능을 공유하기 위해 그것으로 물건을 저장하고 컨트롤러간에 상태 (또는 지시, 또는 할 수 있도록 호출 될 것입니다 기타 서비스 등).

당신은 각 문서와 함께 모를,하지만 나는 그들이 예를 들어이 대답을 참조하십시오

에 대한 :)

을 얘기하는지 추측 것 : 여기에 주제에 대한 내 생각이 Angularjs, passing scope between routes

+0

승인 된 답변으로 표시해 주셔서 감사합니다. 그것이 처음 왔기 때문에. 하지만 실제로 "코드"공유 대신 "데이터"공유를 실제로 의미하는 것처럼 보입니다. –

2

입니다. 각도 녀석들이 항상 설명하려고 노력했듯이, 범위는 당신의 모델이 아닙니다. 각도 "서비스"는이를 수행하는 방법이지만 단어 서비스는 너무 많고 과중한 용어입니다. DDD 배경에서 오면 나는 단어 서비스를 주 또는 statefulness와 조화시킬 수 없다. 단지 나에게 이해가 가지 않는다. ViewModel 또는 무엇을 호출하든 더 의미가 있습니다. MVVM 패턴을 사용하여 Silverlight에서 작업 한 이래로 ViewModel이라고 부릅니다. View를위한 Scope을 제공하는 "Controller"의 임무이기 때문에, 나의 컨트롤러는 지금까지 매우 간결했습니다. 컨트롤러의 생성하는 $ 범위를 통해 뷰와 연결되는 ViewModels의 로직 대량입니다. 말이 돼? 그래서 내 컨트롤러는 mySearchViewModel, 로직의 대부분이 거기에 있다고 가정하고 컨트롤러간에 공유 할 수 있으며 mySearchController에서 $scope.vm = mySearchViewModel과 같은 작업을 수행 할 수있는 뷰와 연관시킬 수 있습니다.

+0

감사합니다. 이해가됩니다. 그러나 저는 컨트롤러가 자신에게보기를 지정해야한다는 데는 동의하지 않습니다. 대신보기의 의무라고 생각합니다. 뷰는 항상 컨트롤러와 연결되어 있으므로 컨트롤러에서 작동하지 않으므로 지원하지 않습니다. 마찬가지로보기에는 제어기가 하나만있을 수 있지만 제어기는 서로 다른보기를 가질 수 있습니다. –

+0

@Makov : 컨트롤러가 뷰를 자신에게 할당한다고는 말한 적이 없습니다. 컨트롤러는 뷰의 범위를 제공합니다. 또한, 나는 여러 개의보기와 관련된 1 개의 컨트롤러에서 멀리 떨어져있을 것입니다. – epitka

+0

죄송합니다. 내가 틀렸어. 그러나 여전히 컨트롤러를 여러보기로 재사용하는 것은 표준입니다. 이것이 첫 번째 부분에서 분리 된 이유입니다. –

관련 문제