Angularjs angular module.run只能运行内联函数

Angularjs angular module.run只能运行内联函数,angularjs,Angularjs,以下代码不起作用的原因: <!DOCTYPE html> <html ng-app="demo"> <head> <meta charset="utf-8" /> <title>Demo</title> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.6/ang

以下代码不起作用的原因:

<!DOCTYPE html>
<html ng-app="demo">
  <head>
    <meta charset="utf-8" />
    <title>Demo</title>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.6/angular.js"></script>
    <script>
      angular.module('demo',[])
      .factory('myFactory', function(){
        return {foo: function(){return 'bar';}};
      })
      .run(['myFactory', testFn(myFactory)]);

      function testFn(myFactory){alert(myFactory.foo());}
    </script>
  </head>
  <body ng-app="demo">
  </body>
</html>
但下面的代码是有效的:

<!DOCTYPE html>
<html ng-app="demo">
  <head>
    <meta charset="utf-8" />
    <title>Demo</title>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.6/angular.js"></script>
    <script>
      angular.module('demo',[])
      .factory('myFactory', function(){
        return {foo: function(){return 'bar';}};
      })
      .run(['myFactory', function(myFactory){
        alert(myFactory.foo());
      }]);
    </script>
  </head>
  <body ng-app="demo">
  </body>
</html>

在我的应用程序中,要运行的函数很长,所以我不想将其内联到app.run中,因为它看起来非常凌乱。怎么做?

对不起,我是个白痴。修正如下:

<!DOCTYPE html>
<html ng-app="demo">
  <head>
    <meta charset="utf-8" />
    <title>Demo</title>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.6/angular.js"></script>
    <script>
      angular.module('demo',[])
      .factory('myFactory', function(){
        return {foo: function(){return 'bar';}};
      })
      .run(['myFactory', function(myFactory){
        testFn(myFactory);
      }]);

      function testFn(myFactory) {alert(myFactory.foo());}
    </script>
  </head>
  <body ng-app="demo">
  </body>
</html>
Angular的run块需要一个指向函数的指针,因此无需创建其他函数,您就可以将其重写为如下内容:

angular.module('app',[])
      .run(['myFactory', testFn]) // testFn is a pointer to the function.

你能验证一下密码吗?反正很短。我不知道如何听从你的指示。我猜你的意思是。运行['myFactory',testFn],它就不工作了。很抱歉,我没有理解testFn是指向函数的指针的意思。如果您可以更改您的版本来演示它,我将不胜感激。当然,这是一个简单的优化。太好了。非常感谢。