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



我正在使用新的angular路由器,并想尝试一个用例,其中我有一个组件和一个嵌套的组件

下面是我用来定义两个组件和路由的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';
  });  
});

和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 }}

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

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

  1. 如果我去到最低的级别(#/parent/child),然后点击刷新,父组件和子组件不再显示。即使URL仍然是相同的,路由也不会恢复。我是否需要重新导航或做一些事情来恢复页面的状态?这是一个非常基本的功能,可以为url添加书签。
  2. 如果我进入最底层(#/parent/child),然后点击 go to parent链接,URL被正确地设置为#/parent,但是子组件仍然可见。

这是老方法#

 var app = angular.module("app", ["ngRoute"]);
app.config(function($routeProvider) {
    $routeProvider
    .when("/", {
        templateUrl : "parent.htm"
    })
    .when("/other", {
        templateUrl : "Default.htm"
    });
});

**Using new way we can do perform routing this .**
(function () {
  'use strict';
  angular
    .module('app', ['parent', 'home', 'ngNewRouter'])
    .controller('AppController', function ($router) {
      this.header = 'TITLE';
      $router.config([
        {
          path: '/', component: 'home'
        },
        {
          path: '/parent', component: 'parent'
        }
      ]);
    });
})();
**I hope this will work .**

你也可以尝试使用UI Router。

如果你想使用嵌套路由,你也可以看看这个

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

你怎么/从哪里得到这个信息的?您的url将看起来更好(甚至可能解决问题,如果它被写成

)。
/parent/:parentId/

/parent/:parentId/child/:childId

我主要使用routeProvider和routeParameters自己,他们提供这个功能没有任何麻烦,但由于这个练习似乎是纯粹的学术,我试着通过阅读模块实际上在做什么,以及检查是否有一个相关的问题之间的github问题。

此外,文档中的这一页似乎对这个问题有所说明。

如果这对你一点帮助都没有,你能考虑给我们更多的信息来帮助我们吗?

祝你好运!

相关内容

  • 没有找到相关文章

最新更新