gpt4 book ai didi

angularjs - Angular UI路由器不解析注入(inject)的参数

转载 作者:行者123 更新时间:2023-12-04 16:52:39 24 4
gpt4 key购买 nike

因此,请考虑我的 angularUI 路由设置中的以下片段。我正在导航到路线/category/manage/4/details (例如)。我希望在相关 Controller 加载之前解析“类别”,实际上我可以在从类别服务返回类别的解析函数中放置一个断点,并查看该类别已返回。现在在 Controller 本身中放置另一个断点,我可以看到“类别”始终未定义。它不是由 UI 路由器注入(inject)的。

任何人都可以看到问题吗?它可能在我提供的代码之外的某个地方,但由于我在运行代码时没有错误,所以无法判断问题的根源可能在哪里。典型的 js 静默失败!

        .state('category.manage', {
url: '/manage',
templateUrl: '/main/category/tree',
controller: 'CategoryCtrl'
})
.state('category.manage.view', {
abstract: true,
url: '/{categoryId:[0-9]*}',
resolve: {
category: ['CategoryService', '$stateParams', function (CategoryService, $stateParams) {
return CategoryService.getCategory($stateParams.categoryId).then(returnData); //this line runs before the controller is instantiated
}]
},
views: {
'category-content': {
templateUrl: '/main/category/ribbon',
controller: ['$scope', 'category', function ($scope, category) {
$scope.category = category; //category is always undefined, i.e., UI router is not injecting it
}]
}
},
})
.state('category.manage.view.details', {
url: '/details',
data: { mode: 'view' },
templateUrl: '/main/category/details',
controller: 'CategoryDetailsCtrl as details'
})

最佳答案

这个概念正在发挥作用。我创建了 working plunker here .变化在这里

而不是这个

resolve: {
category: ['CategoryService', '$stateParams', function (CategoryService, $stateParams) {
//this line runs before the controller is instantiated
return CategoryService.getCategory($stateParams.categoryId).then(returnData);
}]
},

我刚刚返回了 getCategory 的结果......
resolve: {
category: ['CategoryService', '$stateParams', function (CategoryService, $stateParams) {
return CategoryService.getCategory($stateParams.categoryId); // not then
}]
},

使用幼稚的服务实现:
.factory('CategoryService', function() {return {
getCategory : function(id){
return { category : 'SuperClass', categoryId: id };
}
}});

即使那将是一个 promise ......解决将等到它被处理......
.factory('CategoryService', function($timeout) {return {
getCategory : function(id){
return $timeout(function() {
return { category : 'SuperClass', categoryId: id };
}, 500);
}
}});

关于angularjs - Angular UI路由器不解析注入(inject)的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26623574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com