angularjs – 我可以在服务中使用$interval吗?
简短版:请回复标题.谢谢你的帮助.
更长的版本:我开始了,因为我想很多n00bs做的,用一些代码,一点一点地添加一些,并发现自己在一个巨大的控制器中的一切. 所以,我分裂我的功能,并有一堆较小的控制器. 然后我希望他们彼此沟通.我发现了服务. 然后我读到控制器应该是精益的&意思是我开始将大量逻辑从控制器转移到服务. 现在我发现一些旧的代码,其中包括 当被转移到服务中时 与短版本相同的问题:我可以在服务中实际使用$interval吗? [更新]这里是代码: global vars SERVER是一个URL并且var RECONNECT_ATTEMPT_FREQUENCY = 5 * 1000; // 5秒 this.attemptInternetConnection = function() { $interval.cancel(this.internetConnectionRetryTimer); var params = '?action=test_connection&user=dummy'; $http.get(SERVER + params). success(function() { $interval.cancel(this.internetConnectionRetryTimer); $rootScope.$broadcast('internetIsAvailable'); }) .error(function(status) { this.internetConnectionRetryTimer = $interval(this.attemptInternetConnection,RECONNECT_ATTEMPT_FREQUENCY); $rootScope.$broadcast('internetIsUnavailable'); }); };// attemptInternetConnection() 解决方法
没问题.
这是一个例子: <div ng-app="myApp" ng-controller="myCtrl">{{Data.Test}}</div> angular.module('myApp',[]). controller('myCtrl',function ($scope,myService) { $scope.Data = {Test: 'Test'}; myService.ChangeTest($scope.Data); }). service('myService',function ($interval) { this.ChangeTest = function (data) { $interval(function () { if (data.Test == 'Test') data.Test = 'Changed Test'; else data.Test = 'Test'; },500); } }); 这是一个Fiddle. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |