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