Angularjs$stateProvider和单例服务问题

Angularjs$stateProvider和单例服务问题,angularjs,angular-ui-router,angular-services,Angularjs,Angular Ui Router,Angular Services,我使用angular ui router使我的应用程序按路由进行组织,但我有点困惑。正如我所知,我必须在模块中添加“ui路由器”依赖项才能使用$stateProvider。但是,即使我没有添加“ui路由器”依赖项,它也工作得很好 我知道angular服务是单例对象,所以如果我只添加一次“ui路由器”依赖项。我可以在任何模块中使用$stateProvider服务吗 下面的代码是我的应用程序中定义的角度代码 angular.module('app', ['ui-router','app.pages'

我使用angular ui router使我的应用程序按路由进行组织,但我有点困惑。正如我所知,我必须在模块中添加“ui路由器”依赖项才能使用$stateProvider。但是,即使我没有添加“ui路由器”依赖项,它也工作得很好

我知道angular服务是单例对象,所以如果我只添加一次“ui路由器”依赖项。我可以在任何模块中使用$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'
        });
});
angular.module('app',['ui-router','app.pages']);
angular.module('app.pages',['app.pages.core']);
angular.module('app.pages.core',[])
.config(函数($stateProvider,$urlRouterProvider){
$stateProvider
.state('common.default'{
摘要:没错,
观点:{
标题:{
templateUrl:“/public/app/common/components/header/header.html”,
控制器:“headerController”
},
内容:{
模板:“”
}
}
})
.state('common.default.core'{
url:“/gongles/”,
templateUrl:“/public/app/pages/core.html”,
控制器:“coreController”
});
});
视图代码

<div ui-view="header"></div>
<div ui-view="content" class ='view ng-scope openm'></div>


请告诉我任何想法。谢谢

把它想象成一棵树。树的根是您在
ng app
指令中设置的任何模块。在引导时,它从那里开始,加载所有模块组件及其依赖项的组件。一旦引导完成,生命周期将继续(创建常量,然后创建提供程序,然后运行配置块,等等)

由于应用程序中的某个地方依赖于
ui路由器
,因此在引导后,其所有服务都将可用


不管怎样,你不应该依赖它来让你的模块工作。如果您要在另一个应用程序中使用
app.pages.core
模块,而该应用程序与
ui router
没有依赖关系,那么它将无法工作。

将其视为一个树。树的根是您在
ng app
指令中设置的任何模块。在引导时,它从那里开始,加载所有模块组件及其依赖项的组件。一旦引导完成,生命周期将继续(创建常量,然后创建提供程序,然后运行配置块,等等)

由于应用程序中的某个地方依赖于
ui路由器
,因此在引导后,其所有服务都将可用


不管怎样,你不应该依赖它来让你的模块工作。如果您要在另一个应用程序中使用
app.pages.core
模块,而该应用程序与
ui router
没有依赖关系,则该模块将无法工作。

当您创建角度模块时,始终指定此模块中使用的依赖项,即使您已在另一个模块上指定了相同的依赖项

请记住,每个模块都应该是自给自足的,并且应该在不涉及其他模块依赖项的情况下工作,以便完全可重用


所以要正确回答你的问题。。是的,您可以在任何模块中使用
$stateProvider
,但可以在每个模块中添加ui路由器依赖项。

创建角度模块时,始终指定此模块中使用的依赖项,即使您已经在另一个模块上指定了相同的依赖项

请记住,每个模块都应该是自给自足的,并且应该在不涉及其他模块依赖项的情况下工作,以便完全可重用

所以要正确回答你的问题。。是的,您可以在任何模块中使用
$stateProvider
,但在每个模块中添加ui路由器依赖项