web-dev-qa-db-fra.com

rechargement automatique angularjs lors du changement de backend

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

10
user3486836

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();
});
15
David Boskovic

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é.

12
Kelvin Lai