BBa*_*r42 9 angularjs angular-ui-router
这是我的代码:
.state("dashboard.userRoles", {
url: "/user/:id/roles",
controller: "userRolesController as vm",
templateUrl: "app/auth/users/user-roles.html",
resolve: {
user: function (userResource, $stateParams) {
return userResource.get({ id: $stateParams.id }).then(function (res) { return res.data; });
},
roles: function($http, $stateParams) {
var url = appSettings.authApiBaseUrl + "api/accounts/users/" + $stateParams.id + "/roles";
return $http.get(url).then(function(res) { return res.data; });
},
loadMyFiles: function($ocLazyLoad) {
return $ocLazyLoad.load({
name: "app",
files: [
"app/auth/users/userRolesController.js"
]
});
}
}
})
Run Code Online (Sandbox Code Playgroud)
如果我导航到dashboard.userRole并查看fiddler,我会看到获取用户资源的请求,但不是角色.如果我注释掉用户:部分,我会看到在fiddler中获取角色的请求.为什么我不能解决这两个问题?我应该将id发送到控制器并获取所有内容吗?
我试图避免在控制器中收集数据,因为它应该只是视图模型的东西和ui之间的缝合.也许那没关系?提前致谢.
编辑1: 好的,我可以将代码更改为此,并查看fiddler中显示的两个请求,并且它们都返回格式正确的json数据:
.state("dashboard.userRoles", {
url: "/user/:id/roles",
controller: "userRolesController as vm",
templateUrl: "app/auth/users/user-roles.html",
resolve: {
user: function (userResource, $stateParams) {
return userResource.get({ id: $stateParams.id }).$promise;
},
roles: function($http, $stateParams) {
var url = appSettings.authApiBaseUrl + "api/accounts/users/" + $stateParams.id + "/roles";
return $http.get(url).then(function(res) { return res.data; }).$promise;
},
loadMyFiles: function($ocLazyLoad) {
return $ocLazyLoad.load({
name: "app",
files: [
"app/auth/users/userRolesController.js"
]
});
}
}
})
Run Code Online (Sandbox Code Playgroud)
但是,注入控制器的角色始终是"未定义的".用户已正确填充.小提琴手的反应显示了回来的角色,所以我不确定他们为什么不明确.这是控制器代码.
"use strict";
angular
.module("app")
.controller("userRolesController", [
"user", "roles", function (user, roles) {
console.log("app.userRolesController.function()");
var vm = this;
vm.user = user;
vm.roles = roles;
}
]);
Run Code Online (Sandbox Code Playgroud)
BBa*_*r42 10
这个angular-ui-router问题/问题很有帮助.无论如何,这有效!
.state("dashboard.userRoles", {
url: "/user/:id/roles",
controller: "userRolesController as vm",
templateUrl: "app/auth/users/user-roles.html",
resolve: {
user: function (userResource, $stateParams) {
return userResource.get({ id: $stateParams.id });
},
roles: function($http, $stateParams) {
var url = appSettings.authApiBaseUrl + "api/accounts/users/" + $stateParams.id + "/roles";
return $http.get(url);
},
loadMyFiles: function($ocLazyLoad) {
return $ocLazyLoad.load({
name: "app",
files: [
"app/auth/users/userRolesController.js"
]
});
}
}
})
Run Code Online (Sandbox Code Playgroud)
这是控制器.关于角色的.data非常重要!
angular
.module("app")
.controller("userRolesController", [
"user", "roles", function (user, roles) {
var vm = this;
vm.user = user;
vm.roles = roles.data;
}
]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12039 次 |
| 最近记录: |