web-dev-qa-db-ja.com

バックグラウンドが変更されると、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>

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

ありがとう

10
user3486836

文書化された here として$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);
});

注:このサービスによって作成された間隔は、終了したら明示的に破棄する必要があります。特に、コントローラーのスコープまたはディレクティブの要素が破棄されても、自動的には破棄されません。これを考慮し、適切なタイミングで間隔を常にキャンセルするようにしてください。

12
Kelvin Lai