2014-10-03 6 views
1

컨트롤러간에 몇 가지 JSON 데이터를 전달하려고합니다. $http으로 JSON을 받고, $q 지연으로 콜백을 설정하고 그 결과를 내 $rootScope.productList에 할당합니다. 모든 것이 작동하지만, $rootScope.productList$watch을 추가하면 은 정의되지 않은을 반환합니다. 이것에 대한 해결책이 있습니까? 컨트롤러 내부 내 $watch

는 :

$rootScope.watch('productList', function(newVal, oldVal) { 
    $scope.filters = $rootScope.productList; 
    console.log($rootScope.productList); 
}); 

와 다른 컨트롤러 내부

, 내 데이터를 얻을. 나는 $http을 타임 아웃으로 대체하여 문제를 재현했다.

$timeout(function() { 
    $rootScope.productList = $scope.productList; 
    console.log($rootScope.productList); 
}, 500); 

http://plnkr.co/edit/7wWxXgq5BARYgm0tYVgf

나는 $watch로했지만, 내가 어떤 해결 방법을 취할 것입니다.

답변

1

여기서 watch()는 인식 할 수없는 함수입니다. 아마도 $ watch() 일 것입니다. 즉, 원래 코드에서 '시계'옆에 $ 표시가 누락되었습니다.

이 시도 :

$rootScope.$watch('productList', function(newVal, oldVal) { 
    $scope.filters = $rootScope.productList; 
    console.log($rootScope.productList); 
}) 
+1

덕분에, 나는이 하나를 누락 자신을 걸 수도 있겠죠 ... – Holmeron

0

컨트롤러간에 데이터를 전송할 수 있어야하는 경우 각도로 서비스를 구현해야합니다. $ rootScope는 데이터를 설정하기 위해 생성되지 않았습니다.

관련 문제