我正在使用angular-ui-router通过路由组织我的应用程序,但我有点困惑。据我所知,我必须在模块中添加'ui-router'dependencie以使用$ stateProvider。但即使我没有添加'ui-router'依赖,它运作良好。
我知道角度服务是单例对象所以如果我只添加一次“ui-router”依赖。我可以在任何模块中使用$ stateProvider服务吗?
下面的代码是我的应用程序中定义的角度代码。
angular.module('app', ['ui-router','app.pages']);
angular.module('app.pages', ['app.pages.core']);
angular.module('app.pages.core',[])
.config(function ($stateProvider, $urlRouterProvider) {
$stateProvider
.state('common.default', {
abstract: true,
views: {
header: {
templateUrl: '/public/app/common/components/header/header.html',
controller: 'headerController'
},
content: {
template: '<div ui-view></div>'
}
}
})
.state('common.default.core', {
url: "/goongles/",
templateUrl: "/public/app/pages/core.html",
controller: 'coreController'
});
});
查看代码
<div ui-view="header"></div>
<div ui-view="content" class ='view ng-scope openm'></div>
请给我任何想法。感谢
答案 0 :(得分:1)
把它想象成一棵树。树的根是您在ng-app
指令中设置的任何模块。当Angular引导时,它从那里开始,并加载所有模块组件及其依赖项的组件。一旦引导程序完成,生命周期就会继续(创建常量,然后是提供程序,然后运行配置块等)。
由于您的应用中某处依赖ui-router
,所以它的所有服务在引导后都可用。
无论如何,你不应该依赖它来使你的模块工作。如果您在另一个没有依赖app.pages.core
的应用程序中使用ui-router
模块,那么它将不起作用。
答案 1 :(得分:1)
创建角度模块时,始终在此模块中指定使用的依赖关系,即使您已对其他模块指定了相同的依赖。
请记住,每个模块应该是自给自足的,并且应该在不与其他模块依赖关系相关的情况下工作,以便完全可重用。
所以要正确回答你的问题..是的,你可以在任何模块中使用$stateProvider
,但在每个模块中添加ui-router依赖。