J'ai besoin dans mon application de s'actualiser automatiquement lorsque le back-end change. J'ai ajouté un bouton pour recharger le GET sur mon back-end mais je ne souhaite pas le faire. C'est mon code
<body data-ng-app="myPr">
<div ng-controller="TodosController">
<div ng-repeat="todo in todos">
<p>{{todo.title}} ...... {{todo.is_completed}}</p>
</div>
<button ng-click="reload()">Reload</button>
</div>
</body>
mon app.js
var myPr = angular.module('myPr',[]);
myPr.controller("TodosController", function ($scope,$http){
$scope.reload = function () {
$http.get('http://localhost:3000/api/todos').
success(function (data) {
$scope.todos = data.todos;
});
};
$scope.reload();
});
Merci
Vous pouvez simplement recharger vos données à intervalles réguliers. Sinon, vous devez configurer quelque chose comme socket.io ou Pusher et envoyer des notifications au navigateur lorsque le serveur est mis à jour.
var myPr = angular.module('myPr',[]);
myPr.controller("TodosController", function ($scope,$http,$timeout){
$scope.reload = function () {
$http.get('http://localhost:3000/api/todos').
success(function (data) {
$scope.todos = data.todos;
});
$timeout(function(){
$scope.reload();
},30000)
};
$scope.reload();
});
Vous pouvez utiliser $interval(fuctionToRepeat, intervalInMillisecond)
comme indiqué ici .
var myPr = angular.module('myPr',[]);
myPr.controller("TodosController", function ($scope,$http){
$scope.reload = function () {
$http.get('http://localhost:3000/api/todos').
success(function (data) {
$scope.todos = data.todos;
});
};
$scope.reload();
$interval($scope.reload, 5000);
});
Remarque: Les intervalles créés par ce service doivent être explicitement détruits lorsque vous en avez terminé avec eux. En particulier, ils ne sont pas automatiquement détruits lorsque l'étendue d'un contrôleur ou l'élément d'une directive sont détruits. Vous devez en tenir compte et vous assurer de toujours annuler l'intervalle au moment approprié.