Я в некоторых штатах определены следующим образом:Доступ к UI-маршрутизатор просмотры родительского состояния от состояния ребенка
$stateProvider.state('main.product', {
url: '',
abstact: true,
views: {
'': {
templateUrl: 'product/index.html'
},
'sidebar': {
templateUrl: 'product/sidebar.html'
}
}
});
$stateProvider.state('main.product.overview', {
url: '/products/:product_id',
templateUrl: 'product/overview.html',
controller: 'ProductOverviewController'
});
В моем «основных оберточных» контроллере, я хотел бы получить доступ к абстрактным состояниям views
, как это:
angular.module('myApp').controller('MainController', function($rootScope, $scope, $state, $stateParams) {
console.log($state.$current.views.sidebar.templateUrl);
});
Это работает, если я в родительском состоянии main.product
. Однако, как и ожидалось, это возвращает неопределенное для дочернего состояния, main.product.overview
.
Как я могу получить доступ к views
из состояния ребенка?
Я знаю, что я мог бы использовать data object, например:
$stateProvider.state('main.product', {
url: '',
abstact: true,
views: {
'': {
templateUrl: 'product/index.html'
},
'sidebar': {
templateUrl: 'product/sidebar.html'
}
},
data: {
'sidebar': {
templateUrl: 'product/sidebar.html'
}
}
});
Тогда доступ так:
console.log($state.current.data.sidebar.templateUrl)
Но это не чистая, templateUrl
будет дублироваться.
Можно ли получить доступ к views
из состояния ребенка?
Она должна быть динамичной, хотя. Не могли бы вы сделать что-то вроде: '$ state.get (current) .views.sidebar.templateUrl'? –
Да, если 'current' - ваша переменная, которая содержит имя состояния – Rezigned
Это работает для родительского состояния, но не для дочернего. например: '$ state.get (toState.name) .views.sidebar.templateUrl' (' templateUrl' определяется в родительском элементе). Можем ли мы получить доступ к родительскому «представлению» из дочернего? –