2013-07-22 3 views
1

angular.js를 사용하고 있으며 변수가 변경되면 함수를 실행하기 위해 $ watch를 사용하려고합니다. 데이터가 처음로드 될 때 시작되지만 이후는 실행되지 않습니다. 나는 여기서 무슨 일이 일어나는지 정확히 모르겠다.

코드 아래에 붙여 :

function gradeChart($scope, $http) { 
    $http.get('studentData.json').success(function(data) { 
     $scope.students = data; 
    }); 

    $scope.$watch('students',function(change){ 
     console.log('this fires on load but not after'); 
    }); 
} 
+2


요청이 성공적으로 실행되고 있습니까? 오류 기능을 추가하거나 크롬 또는 방화 광구를 사용하여 요청을 모니터하여 요청이 실제로 성공적으로 실행되었는지 확인하십시오. –

답변

0

그것은 분명 어떤 코드 "후"실행 및 업데이트 $scope.students 없습니다.

그러나, 여기 업데이트 $ 범위 배열에 관한 가장 일반적인 두 가지 문제는 다음과 같습니다

  1. 새 배열에 $scope.students를 재 할당하는 경우, $ 시계는 여전히 이전의 배열을보고 할 수있다 (참조) . 코드 "후"귀하의 angular.copy()를 사용해보십시오 :
    angular.copy(data, $scope.students);

  2. 당신이 배열의 요소 중 하나를 변경하는 경우, 당신은 사용해야합니다 중 하나 $watchCollection (그것은 당신이 각도의 버전에서 사용할 수있는 경우() 3 매개 변수를주의 사용) 또는 개체의 평등이 아닌 참조를 확인 : $scope.$watch('students',function(change){...}, true);

관련 문제