Javascript 角度-脚本加载顺序
在MVC工作多年后,我刚刚开始使用Angular。我对js、HMTL非常熟悉,但仍然是角度世界的初学者 我花了3个小时试图找出我的应用程序出了什么问题 因此,该应用程序有3个文件 index.htmlJavascript 角度-脚本加载顺序,javascript,angularjs,Javascript,Angularjs,在MVC工作多年后,我刚刚开始使用Angular。我对js、HMTL非常熟悉,但仍然是角度世界的初学者 我花了3个小时试图找出我的应用程序出了什么问题 因此,该应用程序有3个文件 index.html <body ng-app="perica"> <p>main</p> {{ tagline }} <a ng-click="logOut();">Logout</a> &
<body ng-app="perica">
<p>main</p>
{{ tagline }}
<a ng-click="logOut();">Logout</a>
<div ng-view><p>inside</p></div>
</body>
<script type="text/javascript" src="../components/angular/angular.js"></script>
<script type="text/javascript" src="../AgularApp.js"></script>
<script type="text/javascript" src="../controllers/AcountController.js">
和AccountController.js
var myApp = angular.module('perica', []);
myApp.controller('AcountController', ['$scope', function ($scope) {
$scope.tagline = 'The square root of life is pi!';
}]);
正如您所看到的,它是一个超级简单的应用程序
根据所有的编码逻辑,我应该首先加载angular核心脚本,然后加载angular应用程序,最后加载AngularControls
当我运行应用程序时,Chrome点击了第一个调试器(AngularApp.js文件中angular.module的上方),直接跳入AccountContoler.js,完全忽略了AngularApp.js中定义的内容
但是
当我倒转路径,先放AccountController.js,然后放AngularApp.js时,一切正常
如果有人能解释一下这个问题,我将不胜感激
谢谢 通过使用
var myApp = angular.module('perica', [])
。。。在您的AccountController.js
中,您没有加载您已经存在的'perica'
应用程序(在先前加载的AngularApp.js
中声明):您正在重新定义
perica
应用程序
引用现有模块的正确方法是使用:
angular.module('perica')
^
no dependency declared
而不是:
angular.module('perica', [])
^
dependencies
一旦您熟悉了它,其背后的逻辑就非常简单:如果您在“加载”模块时声明依赖项,那么您就是在创建该模块。否则,您将引用它
TL;DR:您基本上在这里使用了setter
两次,并且从未实际增强您现有的模块
下面是一个运行应用程序的示例。我直接从Javascript框架/扩展菜单加载了AngularJS,并引用了
angularRoute
的外部JS资源(取自cdnjs:)
我基本上只是简单地连接了AngularApp.js
和AccountController.js
内容,以模拟一个接一个地加载它们
请注意,您还必须声明控制视图的控制器:我冒昧地增强了
元素,如下所示:
<body ng-app="perica" ng-controller="AcountController">
通过使用
var myApp = angular.module('perica', [])
。。。在您的AccountController.js
中,您没有加载您已经存在的'perica'
应用程序(在先前加载的AngularApp.js
中声明):您正在重新定义
perica
应用程序
引用现有模块的正确方法是使用:
angular.module('perica')
^
no dependency declared
而不是:
angular.module('perica', [])
^
dependencies
一旦您熟悉了它,其背后的逻辑就非常简单:如果您在“加载”模块时声明依赖项,那么您就是在创建该模块。否则,您将引用它
TL;DR:您基本上在这里使用了setter
两次,并且从未实际增强您现有的模块
下面是一个运行应用程序的示例。我直接从Javascript框架/扩展菜单加载了AngularJS,并引用了
angularRoute
的外部JS资源(取自cdnjs:)
我基本上只是简单地连接了AngularApp.js
和AccountController.js
内容,以模拟一个接一个地加载它们
请注意,您还必须声明控制视图的控制器:我冒昧地增强了
元素,如下所示:
<body ng-app="perica" ng-controller="AcountController">
完全正确!!!这么愚蠢的错误。谢谢!现在一切都很完美,当然我需要先参考mainapp.js,然后再参考控制器。非常感谢你!很高兴帮了你的忙;)确切地这么愚蠢的错误。谢谢!现在一切都很完美,当然我需要先参考mainapp.js,然后再参考控制器。非常感谢你!很高兴帮了你的忙;)