Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重构我的代码_Javascript_Angularjs_Refactoring - Fatal编程技术网

Javascript 重构我的代码

Javascript 重构我的代码,javascript,angularjs,refactoring,Javascript,Angularjs,Refactoring,我这里有一个代码,我在那里使用了不同的控制器。我曾想过将此代码转移到工厂,但无法做到这一点。我会解释得更清楚。下面是我的代码 scope.countDown = 4; scope.runCounter = function() { scope.countDown -= 1; if ( scope.countDown > 0) timeout(scope.runCounter, 1000);

我这里有一个代码,我在那里使用了不同的控制器。我曾想过将此代码转移到工厂,但无法做到这一点。我会解释得更清楚。下面是我的代码

scope.countDown     = 4;
scope.runCounter = function() {
            scope.countDown -= 1;            
            if ( scope.countDown > 0) timeout(scope.runCounter, 1000);              
            else scope.loginUser(); //can be different function
        };
它所做的只是一个倒计时。当倒计时达到0时,它将调用一个作用域函数。就我的重新分解而言,我有:

我的工厂:

runCounter : function(countDown, callback) {
        rootScope.countDown = countDown;
        var self = this;

        rootScope.countDown -= 1;            
        if ( rootScope.countDown > 0) timeout(self.runCounter, 1000);              
        // else callback();
      }
我不知道如何在工厂函数中传递函数。我怎样才能做到这一点


谢谢,

我不确定您想要实现什么,但这是
$timeout
服务的标准用例

$timeout(myfunction,noOfSeconds*1000)

就你而言

$timeout(scope.logiuser,4*1000)

更新 你可以这样做

runCounter : function(countDown, callback) {
    $timeout(callback,countDown* 1000);      
}

我的主要问题是如何将控制器中的代码转换为工厂代码?因为我在不同的控制器中使用运行计数器。谢谢你的回复,它可以工作,但是你会如何显示计数器/倒计时?