다른 모듈에서 업데이트되는 모듈의 최신 데이터를 얻는 방법 A
은 M
모듈의 데이터를 조작합니다. app
과 A
은 모두 M
에 종속됩니다.나는 <strong>모델</strong> 홀더/관리자로 3 개 AngularJS와 모듈, <code>M</code> 모듈을 가지고 있고, 메인 모듈 또 다른 2 개 모듈 <code>app</code> 및 AngularJS와
단순함을 위해이 모델은 동물 이름의 배열 일 뿐이며 A
모듈에서 app
모듈에 의해 제어되는 목록에 반영 될 것으로 예상되는 새 이름을 추가하려고합니다.
이 plunk은이 경우를 설명합니다.
내 모델 모듈 M
이 구독자에게 변경 사항을 게시 할 수 있도록이 stackoverflow question에 제안 된대로 조정자 패턴을 구현했습니다.
app
는 M
에서 NamesModel
공장에서 데이터를 판독하는 컨트롤러 NamesListCtrl
를 가지며, 내부에 내부 NamesModel
데이터가 변경 될 때마다 문서가 해당 이벤트에 가입 NamesModelChanged
.
문제 :
NamesModel.subscribe('NamesModelChanged', function() {
console.log('OK, I will update my data');
// not getting the updated list
$scope.data.namesList = NamesModel.getAll();
});
어떤 도움 : NamesModelChanged
-NamesListCtrl
구독에 대한 익명 콜백 (쿵하는 소리 라인 87)를 호출 할 때 문 $scope.data.namesList = NamesModel.getAll();
업데이트 된 데이터를 검색하지 않습니다?
마치 여기의 문제는 네임즈 모델이 서비스가 아닌 팩토리 인 것처럼 보입니다. 팩토리가 삽입 될 때마다 팩토리가 실행하는 함수가 리턴됩니다. 이는 하나 이상의 목록을 가지고 있음을 의미합니다. 'App Module'이 퍼블릭을 듣게되면,'ModuleA'가 다른 * 인스턴스를 업데이트하는 동안 팩토리가 리턴하는 함수의 getAll' 함수를 호출합니다. 서비스는 싱글 톤이기 때문에 하나의 인스턴스 만 존재할 수 있으므로이 문제는 발생하지 않습니다. – Claies
그렇습니다. 팩트 리는 또한 싱글 톤이지만, 실제로는 동일한 함수가 항상 반환된다는 것을 의미합니다.하지만 함수는 여전히 여러 번 호출됩니다. 시작) 버전의 팩토리가 반환하지만 개별 인스턴스는 여전히 반환합니다. – Claies