Angularjs 如何在ui路由器中继承解析数据
我这里有个棘手的情况。我的父状态和子状态都在顶层(index.html)覆盖相同的ui视图。因此,当它从父级进入子级状态时,作用域被破坏(我想?)基本上父级有一个解析,它存储在MetricData属性中,我似乎无法从子级访问它,因为我假设它不是嵌套的。有没有一种方法可以在子对象中获取metricdata属性,而不必在子对象中再次手动调用相同的ajax调用 母国Angularjs 如何在ui路由器中继承解析数据,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我这里有个棘手的情况。我的父状态和子状态都在顶层(index.html)覆盖相同的ui视图。因此,当它从父级进入子级状态时,作用域被破坏(我想?)基本上父级有一个解析,它存储在MetricData属性中,我似乎无法从子级访问它,因为我假设它不是嵌套的。有没有一种方法可以在子对象中获取metricdata属性,而不必在子对象中再次手动调用相同的ajax调用 母国 .state("home.metric", { url: "/category/:categoryId/metri
.state("home.metric", {
url: "/category/:categoryId/metric/:metricId/name/:metricName",
views: {
'main@': {
templateUrl:
function (stateParams){
//move this to a util function later
var tempName = unescape(stateParams.metricName);
tempName = tempName.replace(/\s/g, "-");
return '../partials/slides/' + tempName + '.html';
},
resolve: {
MetricData: ['MetricService', '$stateParams',
function(MetricService, $stateParams){
var data = { categoryId : $stateParams.categoryId, metricId : $stateParams.metricId};
return MetricService.getMetricDetails(data);
}]
},
controllerProvider:
function ($stateParams) {
var tempName = unescape($stateParams.metricName);
tempName = tempName.replace(/\s+/g, '');
return tempName + 'Ctrl';
}
}
}
})
儿童国家
.state("home.metric.detail", {
url: "/detailId/:detailId/detailName/:detailName",
views: {
'main@': {
templateUrl:
function ($stateParams){
//move this to a util function later
var tempName = unescape($stateParams.detailName);
tempName = tempName.replace(/\s/g, "-");
return '../partials/slides/' + tempName + '.html';
},
resolve: {
DetailData: ['DetailService', '$stateParams',
function(DetailService, $stateParams){
var data = { categoryId : $stateParams.categoryId, detailId : $stateParams.detailId};
return DetailService.getDetails(data);
}],
// MetricData: ['MetricService', '$stateParams',
// function(MetricService, $stateParams){
// var data = { categoryId : $stateParams.categoryId, metricId : $stateParams.metricId};
// return MetricService.getMetricDetails(data);
// }]
},
controllerProvider:
function ($stateParams) {
var tempName = unescape($stateParams.detailName);
tempName = tempName.replace(/\s+/g, '');
return tempName + 'Ctrl';
}
}
}
})
I.问题的答案: 子项,因为其未嵌套。。。有没有办法在子对象中获取metricdata属性 基于 子州从父州继承以下内容:
- 通过resolve解决依赖关系
- 自定义数据属性
$stateProvider
.state('root', {
abstract : true,
// see controller def below
controller : 'RootCtrl',
// this is template, discussed below - very important
template: '<div ui-view></div>',
// resolve used only once, but for available for all child states
resolve: {
user: function (authService) {
return authService.getUserDetails();
}
}
})
这被注入到我们的状态/视图层次结构之上,任何子状态都将从中获益
// any previously root state will just use the above as a parent
.state('index', {
url: '/',
parent : 'root',
检查更多详细信息并在中查看,超时后尝试使用$scope.$parentfunction@GeoJacob我该把它放在哪里。在子级的控制器中或在“解析”区域中?@GeoJacob实际上这不起作用,父级是根范围,因为子级覆盖父级的视图。如果它嵌套在父作用域中,那么parent会起作用的。是的,我在某处看到了一个解决方案。看起来我需要创建一个额外的抽象状态来保存我的所有信息。我希望我能在没有额外抽象状态的情况下使用服务/工厂服务工厂。。。注入$rootScope也会起作用。但从我的角度来看,这个解决方案是。。。清洁工我想说。。
// any previously root state will just use the above as a parent
.state('index', {
url: '/',
parent : 'root',