AngularJS:子状态返回父视图

AngularJS : child state return parent view

本文关键字:视图 返回 状态 AngularJS      更新时间:2023-09-26

我在ES6中使用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 都正确显示:

/

projects/github/btribouillet/btproject/alerts

但是我看到了父视图:

<project></project>

虽然它应该是:

<alerts></alerts>

我做错了什么?到目前为止,解决方案是彼此独立的国家。但是我正在尝试构建一个面包屑模块,我希望能够访问父状态。如果国家彼此独立,这是不可能的。

更新:

我的主要观点是应用程序.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-view 指令,所以子状态没有地方可以加载。