加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 我可以在服务中使用$interval吗?

发布时间:2020-12-17 17:31:37 所属栏目:安全 来源:网络整理
导读:简短版:请回复标题.谢谢你的帮助. 更长的版本:我开始了,因为我想很多n00bs做的,用一些代码,一点一点地添加一些,并发现自己在一个巨大的控制器中的一切. 所以,我分裂我的功能,并有一堆较小的控制器. 然后我希望他们彼此沟通.我发现了服务. 然后我读到控制器
简短版:请回复标题.谢谢你的帮助.

更长的版本:我开始了,因为我想很多n00bs做的,用一些代码,一点一点地添加一些,并发现自己在一个巨大的控制器中的一切.

所以,我分裂我的功能,并有一堆较小的控制器.

然后我希望他们彼此沟通.我发现了服务.

然后我读到控制器应该是精益的&意思是我开始将大量逻辑从控制器转移到服务.

现在我发现一些旧的代码,其中包括
$scope.internetConnectionRetryTimer = $interval($scope.attemptInternetConnection,RECONNECT_ATTEMPT_FREQUENCY);

当被转移到服务中时
this.internetConnectionRetryTimer = $interval(this.attemptInternetConnection,RECONNECT_ATTEMPT_FREQUENCY);
似乎没有运行计时器;要么就是在到期时没有调用该函数.

与短版本相同的问题:我可以在服务中实际使用$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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读