【发布时间】:2013-04-08 11:30:59
【问题描述】:
我正试图了解 AngularJS,但遇到了一个问题。
var myApp = angular.module('myApp', ['myApp.services']);
myApp.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
console.log('Configuring module "myApp"');
$routeProvider.when('/dashboard', {templateUrl: 'partial/dashboard', controller: DashboardController});
$routeProvider.when('/menu', {templateUrl: 'partial/other', controller: OtherController});
$routeProvider.otherwise({redirectTo: '/dashboard'});
$locationProvider.html5Mode(true);
}]);
据我了解,应该在加载模块时调用配置函数。 但事实并非如此!
我在<body> 标签上有ng-app="myApp" 指令。并且脚本以正确的顺序在正文结束标记之前加载(就这一点而言)。
<script src="angular.js"></script>
<script src="app.js"></script>
<script src="services.js"></script>
<script src="controllers.js"></script>
</body>
我很确定我在这里忽略了一些微不足道的事情。应该有一条消息打印到控制台。但它仍然是空的,没有任何错误或警告。
应用程序中不依赖于路线的部分运行良好。
更新:我的 service.js 的简化版本
'use strict';
angular.module('myApp', function ($provide) {
$provide.factory('myService', function ($http) {
var service = function () {
...
service implementation
...
};
return new service();
});
});
【问题讨论】:
-
是的......它应该。您确定所有脚本都已加载吗?控制台中是否有任何错误?我刚刚将您的代码发布到Plunkr 以检查是否有任何拼写错误,它按预期工作。我只能怀疑你的
myApp.services,你会发布吗? -
@CaioToOn - 这确实是我的服务中的一个编码错误。谢谢指点。
-
我看到您在下面发布了正确答案;然而,对上面的一个微小的修正是 when
config运行。与第一次注入的服务不同,config块在 AngularJS 引导程序中的指定点运行。换言之,config将始终运行,并且始终在您的应用执行之前运行。 -
@JoshDavidMiller - 这是否适用于所有模块或仅适用于注入器实例化的模块?
-
模块不会被注入器实例化;服务做。
config,虽然会为您的应用程序模块和它声明为依赖项的任何模块以及它们的所有依赖项等执行。
标签: javascript angularjs