angularjs автоматическая перезагрузка при изменении бэкэнда
мне нужно в моем приложении для автоматического обновления при изменении бэк-энда. Я добавил кнопку, чтобы перезагрузить GET до моего бэк-энда, но я не хочу этого делать. Это мой код
<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>
Мои приложения.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();
});
спасибо
2 ответов
вы можете просто перезагружать данные через регулярные промежутки времени. Иначе нужно будет что-то настройка типа гнездо.Ио или толкатель и push-уведомления в браузер при обновлении сервера.
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();
});
можно использовать $interval(fuctionToRepeat, intervalInMillisecond)
как документально здесь.
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);
});
Примечание: интервалы, созданные этой службой, должны быть однозначно уничтожены, когда вы закончите с ними. В частности, они не уничтожаются автоматически при уничтожении области действия контроллера или элемента директивы. Вы должны принять это во внимание и обязательно отменить интервал в соответствующий момент.