我正在使用新的角度路由器,想要尝试一个使用组件和嵌套组件的用例.
下面是我写的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
基于此代码,我有以下问题/问题:
>如果我去最低级别(#/ parent / child),然后点击刷新,则不再显示父组件和子组件.即使URL仍然相同,路由也不会恢复.我是否需要重新启动或执行某些操作来恢复页面的状态?这是一个非常基本的功能,可以将网址加入书签.
>如果我去最低级别(#/父/子),然后点击转到父链接,URL被正确设置为#/ parent,但子组件仍然可见.
打击我的第一件事是,您没有使用任何指向要显示的父级和子级的标识符.
如何/在哪里获得这些信息?你的网址看起来会更好一些(甚至可以解决这个问题,如果它被写成
/parent/:parentId/
要么
/parent/:parentId/child/:childId.
我自己主要使用routeProvider和routeParameters,他们提供这个功能,没有任何麻烦,但是看起来好像纯粹是学术性的,我会尝试阅读模块实际在做什么以及检查是否存在github问题中的一个相关问题.
此外,this page from the documentation似乎对这个问题有所了解.
如果这不是帮助你,你会考虑通过给我们更多的信息来帮助我们吗?
祝你好运!