angular里的$interval是不是不能写到service中?

起始是这样的,没毛病

angular.module('myApp',['ionic','ctrlController','serviceModule'])

此处控制器
angular.module('serviceModule',[])
.controller('myIndianaCtrl',function($scope,Timer){
    Timer.timer(function(a,b,c){
            $scope.h=a;
            $scope.m=b;
            $scope.s=c;
        })
 })

此处服务
angular.module('serviceModule',[])
.service('Timer',[function($interval){
    var _this=this;
    this.timer=function(callbackFun){
        var h=23,m=23,s=59;
        _this.h=h;
        _this.m=m;
        _this.s=s;
        callbackFun(_this.h,_this.m,_this.s);
        return this;
    }
}])

以上代码在view里绑定的话, 可以显示 h m s,然而当我想加个倒计时,例如这样

angular.module('serviceModule',[])
.service('Timer',[function($interval){
    var _this=this;
    this.timer=function(callbackFun){
        var h=23,m=23,s=59;
        $interval(function run(){
            --s;
                if(s<0){
                    --m;
                    s=59;
                }
                if(m<0){
                    --h;
                    m=59;
                }
                if(h<0){
                    h=00;
                    m=00;
                    s=00;
                }
                _this.h=h;
                _this.m=m;
                _this.s=s;
            callbackFun(_this.h,_this.m,_this.s);
        })

        return this;
    }
}])

这时console里面会报这样子的错误,然后就没有然后了,不晓得咋整了
图片描述
是interval不能写到service里面的吗?
如果能,求大神举个小栗子就好,拜谢!

阅读 2k
1 个回答

你这是应该是注入被混淆了的毛病

这么写试试

angular.module('serviceModule',[])
.service('Timer',['$interval', function($interval){
// ...
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题