2015-10-22 43 views
5

Tôi cần trong ứng dụng của mình để tự động làm mới khi thay đổi back-end. Tôi đã thêm một nút để tải lại GET vào back-end của tôi nhưng tôi không muốn làm điều đó. Đây là mã của tôiangularjs tự động tải lại khi thay đổi phụ trợ

<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 tôi

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

Cảm ơn

Trả lời

9

Bạn chỉ có thể tải lại dữ liệu của bạn đều đặn. Nếu không, bạn cần phải thiết lập một cái gì đó như socket.io hoặc Pusher và đẩy thông báo tới trình duyệt khi máy chủ cập nhật.

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

Bạn nên sử dụng khoảng thời gian $ như trong câu trả lời của @ Kelvin. Thời gian chờ chỉ thực hiện một lần. – SolessChong

+0

chúng tôi có thể sử dụng $ interval, Nhưng làm thế nào để ngăn chặn nó? –

7

Bạn có thể sử dụng $interval(fuctionToRepeat, intervalInMillisecond) làm tài liệu 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); 
}); 

Lưu ý: Khoảng tạo ra bởi dịch vụ này phải bị tiêu diệt một cách rõ ràng khi bạn đã kết thúc với họ. Đặc biệt chúng không tự động bị phá hủy khi phạm vi của bộ điều khiển hoặc phần tử của chỉ thị bị hủy. Bạn nên cân nhắc điều này và đảm bảo luôn hủy khoảng thời gian tại thời điểm thích hợp.

Các vấn đề liên quan