2015-10-22 16 views
5

Ho bisogno nella mia app di auto-aggiornarsi quando il back-end cambia. Ho aggiunto un pulsante per ricaricare il GET sul mio back-end ma non desidero farlo. Questo è il mio codiceangularjs auto ricarica quando modifica backend

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

miei 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(); 
}); 

Grazie

risposta

9

Si può solo caricare i dati a intervalli regolari. Altrimenti dovresti impostare qualcosa come socket.io o Pusher e inviare notifiche al browser quando il server si aggiorna.

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(); 
}); 
+2

È necessario utilizzare $ intervallo come nella risposta di @ Kelvin. Il timeout viene eseguito una sola volta. – SolessChong

+0

possiamo usare $ interval, ma come fermarlo? –

7

È possibile utilizzare $interval(fuctionToRepeat, intervalInMillisecond) come documentato here.

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); 
}); 

Nota: Intervalli creati da questo servizio devono essere esplicitamente distrutti quando si è finito con loro. In particolare, non vengono automaticamente distrutti quando l'ambito di un controllore o l'elemento di una direttiva vengono distrutti. Dovresti tenerne conto e assicurarti di cancellare sempre l'intervallo al momento opportuno.

Problemi correlati