Angular新路由器 - 嵌套组件和路由

Ala*_*ain 15 angularjs angular-routing angular-new-router

我正在玩新的角度路由器,并想尝试一个用例,我有一个组件和一个嵌套组件.

下面是我编写的用于定义两个组件和路由的JavaScript代码:

angular.module('app', ['ngNewRouter'])
  .controller('AppController', function ($router) {

  $router.config([
    {
      path: '/parent',
      component: 'parent'
    }
  ]);

})
.controller('ParentController', function ($router) {

  this.name = 'Parent component';
  $router.config([
    {
      path: '/child',
      component: 'child'
    }
  ]);

})
.controller('ChildController', function () {

  this.name = 'Child component';

})
.config(function ($componentLoaderProvider) {

  $componentLoaderProvider.setTemplateMapping(function (compName) {
    return compName + '.html';
  });  

});
Run Code Online (Sandbox Code Playgroud)

和HTML部分:

<!-- index.html -->
<body ng-controller="AppController as app">
    <a ng-link="parent">Go to parent</a>
    <div ng-viewport></div>
</body>

<!-- parent.html -->
{{ parent.name }}<br/>
<a ng-link="child">Show child</a>
<div ng-viewport></div>

<!-- child.html -->
{{ child.name }}
Run Code Online (Sandbox Code Playgroud)

这是一个包含上述代码的Plunker:http://plnkr.co/edit/yWCFgXQI491EYvIldjyR

基于此代码,我有以下问题/问题:

  1. 如果我转到最低级别(#/ parent/child)然后点击刷新,则不再显示父组件和子组件.即使URL仍然相同,路由也不会恢复.我是否需要重新导航或执行某些操作来恢复页面的状态?这是一个非常基本的功能,可以为URL添加书签.
  2. 如果我转到最低级别(#/ parent/child)然后单击Go to parent链接,则URL正确设置为#/ parent但子组件仍然可见.

sim*_*mme 1

让我震惊的第一件事是,您没有使用任何指向您想要显示的父级和子级的标识符。

您如何/从哪里获得此信息?你的网址看起来会好很多(如果写成这样,甚至可能解决问题

/parent/:parentId/
Run Code Online (Sandbox Code Playgroud)

或者

/parent/:parentId/child/:childId
Run Code Online (Sandbox Code Playgroud)

我自己主要使用的是routeProvider和routeParameters,它们提供这个功能没有任何麻烦,但由于这个练习似乎纯粹是学术性的,我会尝试阅读该模块实际在做什么,并检查是否有相关的github 问题中的问题。

此外,文档中的这一页似乎揭示了这个问题的一些情况。

如果这对您没有任何帮助,您会考虑向我们提供更多信息来帮助我们吗?

祝你好运!