如何在polymer 2中使用应用程序路径以获得深度路径?

如何在polymer 2中使用应用程序路径以获得深度路径?,polymer,Polymer,这是聚合物应用启动器套件代码的一部分。我刚刚在src中的元素中添加了一个my news list.html: <app-location route="{{route}}"></app-location> <app-route route="{{route}}" pattern="/:page" data="{{routeData}}" tail="{{subroute}}"></app-route> <ap

这是聚合物应用启动器套件代码的一部分。我刚刚在src中的元素中添加了一个
my news list.html

<app-location route="{{route}}"></app-location>
<app-route
    route="{{route}}"
    pattern="/:page"
    data="{{routeData}}"
    tail="{{subroute}}"></app-route>

<app-drawer-layout fullbleed>
  <!-- Drawer content -->
  <app-drawer id="drawer" slot="drawer">
    <app-toolbar>Menu</app-toolbar>
    <iron-selector selected="[[page]]" attr-for-selected="name" class="drawer-list" role="navigation">
      <a name="news" href="/news">News</a>
      <a name="view1" href="/view1">View One</a>
    </iron-selector>
  </app-drawer>

  <!-- Main content -->
  <app-header-layout has-scrolling-region>

    <app-header slot="header" condenses reveals effects="waterfall">
      <app-toolbar>
        <paper-icon-button icon="my-icons:menu" drawer-toggle></paper-icon-button>
        <div main-title>My App</div>
      </app-toolbar>
    </app-header>

    <iron-pages
        selected="[[page]]"
        attr-for-selected="name"
        fallback-selection="view404"
        role="main">
      <my-news-list name="news" route="{{subroute}}"></my-news-list>
      <my-view1 name="view1"></my-view1>
      <my-view404 name="view404"></my-view404>
    </iron-pages>

  </app-header-layout>
</app-drawer-layout>
谢谢您的帮助。

您应该在“铁版”中声明“我的新闻视图”组件,就像您所做的那样:

 <iron-pages selected="[[page]]" attr-for-selected="name"
    fallback-selection="view404" role="main">
  <my-news-view name="news-view" route="{{subroute}}" />
</iron-pages>

因此,当用户根据名称属性而不是组件名称本身导航到/news view/12时,iron页面将知道显示哪个组件

但是。解决方案中有一些棘手的部分:

  • 请注意如何将子例程传递给子组件以将其内部解耦 路由机制来自它所在的实际url路径
  • 初学者工具包使用延迟加载来导入组件,在该函数中,它将前缀“my-”添加到实际路由“news view”中。这就是要加载的结果组件名如何变成“我的新闻视图”。这可能会混淆 你可以阅读更多关于这方面的内容


    PS:我个人认为polymers示例应用程序路由的工作方式非常混乱,因为它看起来像web服务器静态名称解析(基于组件名称,而不是组件属性“name”)但事实并非如此。

    您应该将组件添加到组件中,然后使用子路由来了解的id,然后尝试
    dna路由器
    。它现在与Polymer 2.0项目兼容

    请按照以下答案回答-


    或访问

    请编辑您的问题并提供一些详细信息。你正在运行什么版本的聚合物?到目前为止,您在配置路由方面做了哪些工作?
    // For News
    /news                     //all news list. loads my-news-list element
    /news/12                  //news[12] view. loads my-news-view elemnt
    /news/categories          //all categories list view. loads my-news-categories element
    /news/categories/3        //category[3] news list view. loads my-news-category element
    
    // and jobs similar to module
    /Jobs
    /jobs/country/cityName
    /jobs/country/cityName/featured
    
     <iron-pages selected="[[page]]" attr-for-selected="name"
        fallback-selection="view404" role="main">
      <my-news-view name="news-view" route="{{subroute}}" />
    </iron-pages>