2015-10-22 3 views
5

Мне нужно, чтобы мое приложение обновлялось, когда фоновые изменения меняются. Я добавил кнопку, чтобы перезагрузить GET для моего back-end, но я не хочу этого делать. Это мой кодangularjs auto reload при изменении бэкэнд

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

мои 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(); 
}); 

Благодаря

ответ

9

Вы можете просто перезагрузить ваши данные через регулярные промежутки времени. В противном случае вам нужно настроить что-то вроде socket.io или Pusher и нажимать уведомления в браузере при обновлении сервера.

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

Вы должны использовать $ interval, как в ответе @ Кельвина. Тайм-аут просто выполняется один раз. – SolessChong

+0

мы можем использовать $ interval, но как его остановить? –

7

Вы можете использовать $interval(fuctionToRepeat, intervalInMillisecond), как документально 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); 
}); 

Примечание: Интервалы, созданные с помощью этой службы должны быть явно уничтожен, когда вы закончите с ними. В частности, они не автоматически уничтожаются при уничтожении области действия контроллера или элемента директивы. Вы должны принять это во внимание и всегда обязательно отменить интервал в соответствующий момент.

Смежные вопросы