0
我正在使用带ES6的angularJs。因此,每个视图都是模块。AngularJS:子状态返回父视图
模块项目:
let projectModule = angular.module('project', [
uiRouter
])
.config(function($stateProvider, $urlMatcherFactoryProvider) {
$stateProvider
.state('project', {
url: '/projects/:origin/:owner/:name',
template: '<project></project>',
data : { pageTitle: 'Project' },
});
})
.component('project', projectComponent)
.factory('$projectResource', service);
模块警报(它的状态是项目状态的子层):
let alertsModule = angular.module('alerts', [
uiRouter
])
.config(($stateProvider) => {
$stateProvider
.state('project.alerts', {
url: '/alerts',
template: '<alerts></alerts>',
data : { pageTitle: 'Alerts' }
});
})
.component('alerts', alertsComponent);
所有视图由部件管理和从所定义的显示模板属性处于相关状态。
<alerts></alerts>
组件被定义为这样:
import template from './alerts.html';
import controller from './alerts.controller';
import './alerts.scss';
let alertsComponent = {
restrict: 'E',
template: template,
controller: controller,
controllerAs: 'vm',
bindings: true
};
export default alertsComponent;
观点被称为这样:
<a ui-sref="project.alerts({ origin: project.origin, owner: project.owner.name, name: project.name })">Alerts</a>
还是那个样子,如果我在项目中已经是:
<a ui-sref="project.alerts">Alerts</a>
两个HREF能正确显示:
/项目/ github上/ btribouillet/btproject /警报
但我seing的父视图:
<project></project>
虽然应该是:
<alerts></alerts>
我在做什么错了?直到现在的解决方案是相互独立。但我试图建立一个面包屑模块,我想能够访问父状态。如果国家彼此独立,这是不可能的。
更新:
我的主要观点是app.html:
<!-- Place all UI elements intended to be present across all routes in this file -->
<div class="site-wrapper">
<navbar></navbar>
<div class="view" ui-view></div>
<navfooter></navfooter>
</div>
我的猜测是,你忘了把你的“项目”组件html中的UI视图指令,所以孩子的状态没有地方加载英寸 – Bata
我要检查。我虽然这是没有必要的,因为它有两种不同的看法。 – Brieuc
确实是这样,如果你想写它作为答案,我会很高兴验证它。检查文档https://github.com/angular-ui/ui-router/wiki/Nested-States-&-Nested-Views#abstract-state-usage-examples – Brieuc