因此,请考虑我的angularUI路由设置中的以下片段.我正在导航到路线/类别/管理/ 4 /详细信息(例如).我希望在相关控制器加载之前解析’category’,实际上我可以在resolve函数中放置一个断点,该断点返回类别服务中的类别,并看到该类别已被返回.现在在控制器本身内放置另一个断点,我可以看到“类别”总是未定义的.它不是由UI路由器注入的.
有谁能看到这个问题?它可能在我提供的代码之外的某个地方,但由于我在运行代码时没有错误,因此无法确定问题的根源所在.典型的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) { //this line runs before the controller is instantiated return CategoryService.getCategory($stateParams.categoryId).then(returnData); }] },
我刚刚返回了getCategory的结果……
resolve: { category: ['CategoryService',$stateParams) { return CategoryService.getCategory($stateParams.categoryId); // not then }] },
天真的服务实施:
.factory('CategoryService',function() {return { getCategory : function(id){ return { category : 'SuperClass',categoryId: id }; } }});
即使这将是一个承诺…决心将等到它被处理…
.factory('CategoryService',function($timeout) {return { getCategory : function(id){ return $timeout(function() { return { category : 'SuperClass',categoryId: id }; },500); } }});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。