如何在angular.js中进行自动数据更新?

时间:2015-09-11 15:41:54

标签: javascript jquery angularjs

我需要在服务器上创建新数据时更新视图吗? 如何做到这一点?

我的控制器

app.controller('MainController', ['$scope', 'games', function($scope, games) {
games.success(function(data) {
    console.log(data[0]);
    $scope.games = data[0];
}); 
}]);

我的工厂

app.factory('games', ['$http', function($http) {


return $http.get('./game')
     .success(function(data) {
       return data;
     })
     .error(function(data) {
       return data;
     });
}]);

2 个答案:

答案 0 :(得分:2)

请记住,Angular中的服务是对象。因此,创建一个返回promise的简单方法,以便在控制器中对其进行管理。

<强>控制器

app.controller('MainController', ['$scope', 'games', function($scope, games) {

        games.get().then(function(data) {
            console.log(data[0]);
            $scope.games = data[0];
        });

    }]);

<强>服务

app.service('games', ['$http', function($http) {

    this.get = function() {
        return $http.get('./game');
    };

}]);

答案 1 :(得分:1)

如果您不想使用websockets

,可以使用$timeout
$timeout(function(){
  games.success(function(data) {
    console.log(data[0]);
    $scope.games = data[0];
 }); 
},1000);

更新:抱歉应该是$ interval

$interval(function(){
  games.success(function(data) {
    console.log(data[0]);
    $scope.games = data[0];
 }); 
},1000);

更新:如何使用工厂

执行此操作
app.factory('games', ['$http', function($http) {
    return {
        getGame: function() {
            return $http.get('./game');
        }
    }
}]);

现在在您的控制器中

app.controller('MainController', ['$scope', 'games', function($scope, games) {
    games.getGame().success(function(data) {
        $scope.games = data[0];
    });
}]);