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是指向函数的指针的意思。如果您可以更改您的版本来演示它,我将不胜感激。当然,这是一个简单的优化。太好了。非常感谢。