2015-01-19 2 views
0

$ scope를 사용하여 항상 작동하는 데 사용되었습니다. $ http 요청에 $ 적용이 무엇이 있습니까? 먼저 "Digest cycle is already in progress"메시지를 얻었습니다. msg를 없애고 여전히 데이터를 업데이트하지 않는 setTimeout()을 추가했습니다. 이것은 문제가되어서는 안되며, 분명히 뭔가 빠져 있습니다.

html로 :

<form name="userDataForm" role="form" ng-submit="submit()"> 
<input type="text" name="userId" placeholder="Enter User ID" ng-model="viewModel.useId" /> 
<input type="text" name="start" placeholder="Start Date: dd-mm-yyyy" ng-model="viewModel.startDate"/> 
<input type="text" name="end" placeholder="End Date: dd-mm-yyyy" ng-model="viewModel.endDate"/><br/> 

<button type="submit"> 
    Get Data 
</button> 
<ul ng-repeat="place in viewModel.userData.data.significant_places"> 
    <li> 
     You have been at <span style="color:red;">{{place.name}}</span> <span style="color:red;">{{place.number_of_days}}</span> days this month 
    </li> 
<ul> 

JS이 잘 작동해야

$scope.viewModel = { 
    userId:'', 
    startDate:'', 
    endDate:'', 
    userData:{} 
}; 
$scope.submit = function(){ 
       setTimeout(function(){ 
        $scope.$apply(function(){ 
         $http.get('http://localhost:3000/?user_id=279&start=20150101&end=20150113').success(function(data){ 
          $scope.viewModel.userData = data; 
         }).error(function(){ 
          console.log('error'); 
         }); 
        }); 
       }, 1) 


}; 
+0

여기에 목표에 대한 정보를 추가해야합니다. 본능적으로, 나는 이것이 이것을하는 가장 쉬운 방법이라고 생각하지 않는다. – Casey

+0

어째서 http 호출을'$ apply'로 감쌀 것입니까? 또한 반환 된 데이터에는'data : {significant_places : [...'? – zeroflagL

답변

0

:

$scope.viewModel = { 
    userId:'', 
    startDate:'', 
    endDate:'', 
    userData:{} 
}; 
$scope.submit = function(){ 

    $http.get('http://localhost:3000/?user_id=279&start=20150101&end=20150113').success(function(data){ 
     $scope.viewModel.userData = data; 
    }).error(function(){ 
     console.log('error'); 
    }); 

}; 

사용해야한다 매우 적은 경우가 있습니다 $scope.$apply. Angular는 거의 항상 당신을 위해 그것을합니다 (당신이 그 오류를 얻는 이유입니다).

+0

고마워요, 결국 그것은 제 쪽에서 문제였습니다. 나는 잘못된 json stractur를 찾고있었습니다. 내 잘못이야. –