У меня здесь сложная ситуация. мое родительское состояние и дочернее состояние оба переопределяют один и тот же вид на верхнем уровне (index.html). Поэтому, когда он переходит в дочернее состояние от родителя, область становится поврежденной (я думаю?) В принципе у родителя есть решение, которое хранится в свойстве MetricData, которое я не могу получить от ребенка, так как его не вложен я если предположить. Есть ли способ получить это свойство metricdata в дочернем элементе без необходимости вручную повторять один и тот же вызов ajax в дочернем
родительское состояние
.state("home.metric", {
url: "/category/:categoryId/metric/:metricId/name/:metricName",
views: {
'[email protected]': {
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: {
'[email protected]': {
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';
}
}
}
})