我有这项服务:
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访问吗?
谢谢:)
答案 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覆盖。