即使我不懂設計(設計開銷IMO) 是:我使用它一個控制器內:
app.controller('myCtrl', function($scope, $http, Poller){
$scope.polledVar = Poller.poll($http.get('api/getVar'), 1000);
});
使用此代碼時,我得到以下錯誤它:
app.factory('Poller', function($http, $timeout,$q){
var poll = function(http, tick){
return http.then(function(r){
var deferred = $q.defer();
$timeout(function(){
deferred.resolve(r);
}, tick);
return deferred.promise;
});
};
return{
poll: poll
};
});
你可以簡單地傳遞像Poller.poll('api/getVar',1000)的網址;
UPDATE
只是爲了玩:) 及以下https://stackoverflow.com/a/16520050/356380
var app = angular.module('myModule', []);
app.factory('Poller', function($http,$q){
return {
poll : function(api){
var deferred = $q.defer();
$http.get(api).then(function (response) {
deferred.resolve(response.data);
});
return deferred.promise;
}
}
});
app.controller('myCtrl', function($scope, $http,$filter ,Poller){
//Just to start
$scope.myts = Poller.poll('mytest.php');
$scope.mydate = $scope.myts.then(function(data){
return $filter('date')(data,'yyyy-MM-dd HH:mm:ss Z');
});
var Repeater = function() {
$scope.$apply(function() {
$scope.myts = Poller.poll('mytest.php');
$scope.mydate = $scope.myts.then(function(data){
return $filter('date')(data,'yyyy-MM-dd HH:mm:ss Z');
});
});
};
var timer = setInterval(Repeater, 1000);
});
mytest.php
echo time()*1000;
會不會有通過的$ scope.polledVar的輪詢,以便更新它的每個刻度的方法嗎? – Lukmo
你的意思是像setInterval? http://stackoverflow.com/questions/14237070/using-setinterval-in-angularjs-factory – Whisher
問題是從服務的數據傳遞到控制器的$範圍,但我用$ rootScope來代替。 – Lukmo