配置中的服务注入。 AngularJS

时间:2017-08-07 14:19:48

标签: angularjs parameters angular-ui-router config inject

我有这项服务:

app.service("UserService", function(){

    var userService = {};
    userService.userInfo = [
        {firstName: "John", lastName: "Doe"},
        {firstName: "Carl", lastName: "Smith"}
        ];
    return userService;
});

我想将它注入.config来定义路由(我正在使用ui-router)

app.config(["userService", function($stateProvider, userService){
     $stateProvider
    .state("#",{
        templateUrl: "index.html",
        controller: "UserListController"
    })
    .state('users', {
        url: '/user/:username',
         templateUrl: "view/userProfile.html",
        controller: "UserListController",
         params: { username: userService.userInfo[0].firstName}
           })
...

这不能正常工作。我可以将任何想法注入该服务中以供.config访问吗?

谢谢:)

3 个答案:

答案 0 :(得分:0)

对于AngularJS中的注射,如果您要提供要注射的名称,则需要提供所有名称和声明它的方式。

在这种情况下:

app.config(["$stateProvider", "UserService", function($stateProvider, userService){

答案 1 :(得分:0)

在配置期间,您只能访问提供商,在您的情况下,您可以通过将UserServiceProvider注入app.config来访问app.config(function(UserServiceProvider){ // Config stuffs... })

$get()

使用此提供商,您可以通过示例UserServiceProvider.$get().userInfo[0] 访问您的服务属性:

data.table

Here是一名工作人员

答案 2 :(得分:0)

常量可在配置阶段和运行阶段注入:

app.constant("UserConstant", {
    userInfo:[
        {firstName: "John", lastName: "Doe"},
        {firstName: "Carl", lastName: "Smith"}
    ]
});

来自文档:

  

常量(名称,值);

     

使用$injector注册常量服务,例如字符串,数字,数组,对象或函数。与value一样,不可能将其他服务注入常量。

     

但与value不同,常量可以注入模块配置函数(参见angular.Module),并且不能被AngularJS decorator覆盖。

     

Angular $provider API Reference - constant