Это использовалось для меня все время, используя $ scope. $ Apply на $ http-запросы, чего я не вижу на этом? Я сначала получил «Цикл дайджеста уже идет» msg, чем добавил setTimeout(), который избавился от этого сообщения, но все же ng-repeat не обновит данные. Это не должно быть проблемой, я явно что-то пропустил.
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)
};
Вы должны добавить информацию о вашей цели здесь. Инстинктивно я не думаю, что это самый простой способ сделать это. – Casey
Почему бы вам не наложить свой http-вызов на '$ apply'? Также ваши возвращаемые данные содержат данные: {significant_places: [... '? – zeroflagL