我需要在服务器上创建新数据时更新视图吗? 如何做到这一点?
我的控制器
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;
});
}]);
答案 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];
});
}]);