0

그래서있어 다음과 같은 코드 ...각도 1.5 범위 변수

testApp.controller(...) { 

    $scope.results = []; 
    $scope.hasData = true; 

    $scope.results.push({ 
     "name": "test" 
    }); // WORKS 

    db.get('table_people').then(function(response) { 
     console.log('success'); 

     $scope.results.push({ 
      "name": "test" 
     }); 
    }); // this DOESN'T WORK even though the "success" message is printed... 

}); 

그리고 당신은 코멘트에서 알 수 있듯이, 배열 작품에 대한 첫 번째 push하지만, 후자는 그렇지 않습니다. 맨 위는 {{ results }}을 사용하여 Angular 템플릿에서 인쇄 할 수 있지만 후자는 빈 배열을 반환합니다.

편집 : 해결책이 실행하지만 종류의 함께 해킹 솔루션 같은 느낌되지 않았습니다주기 다이제스트 $timeout를 사용하여 발견되었다.

편집 : 솔루션 ...

db.get('table_people').then(function (response) { 
    console.log('success'); 
    $timeout(function() { 
     $scope.results = response.data; 
    }); 
}); 

내가 인해 더 이상 코드의 기능에 더 이상 테스트 데이터를 필요로하지 않고 직접 응답 데이터를 적용 할 수있는 솔루션 코드가 약간 다릅니다.

+0

중첩 된 함수 내부에서 console.log ($ scope)를 사용하면 어떻게됩니까? 어쩌면 $ 범위가 실제로 범위를 벗어났습니다. –

+0

해결책도 게시하십시오. 어쩌면 그것은 정돈 될 수 있습니다. –

+0

또는 다이제스트주기를 강제 실행할 수 있습니다. –

답변

1

$digest 사이클 틱이 누락되었습니다. 데이터를 $scope.results으로 푸시 한 후 $scope.$digest()을 실행하면 문제가 해결됩니다. $timeout을 사용하면이 상황에서 과도한 공격이 될 수 있습니다.

+0

아, 더 나은 해결책! 친절 하셔서 고맙습니다. :) –