我对 Iron-pages 和 app-route 不是很好,所以我会尽力解释这一点。
我正在构建一个 Web 应用程序,其中内置了两个主要的“应用程序”——常规用户界面和管理仪表板。所以很自然地,我想要两条不同的主要“路径”:/admin
和/home
管理仪表板中应该有一个抽屉,我可以在其中从“类别”列表中进行选择,并在选择类别后加载特定视图。示例/admin/users
将加载将加载用户列表的视图。单击列表页面上的项目后,会显示一个详细信息部分。例子/admin/user/UserA
到目前为止,这是我的结构。demo-app 具有包含 HomePage 和 AdminPage 的 Iron-pages。AdminPage 也有包含 ListView 和 DetailView 的铁页。
我可以进入管理页面,但是从“类别”列表中选择后,该路线无法启动。我的代码基于 Shop Demo
演示应用
<app-location route="{{route}}"></app-location>
<app-route
route="{{route}}"
pattern="/:page"
data="{{routeData}}"
tail="{{subroute}}"></app-route>
<iron-media-query query="max-width: 767px" query-matches="{{smallScreen}}"></iron-media-query>
<app-header role="navigation" id="header" effects="waterfall" condenses reveals>
<app-toolbar>
</app-toolbar>
</app-header>
<iron-pages role="main" selected="[[page]]" attr-for-selected="name" selected-attribute="visible" fallback-selection="404">
<!-- home view -->
<demo-home name="home"></demo-home>
<!-- admin view -->
<demo-admin name="admin"></demo-admin>
<shop-404-warning name="404"></shop-404-warning>
</iron-pages>
演示管理员
<app-route
route="{{route}}"
pattern="/admin"
data="{{routeData}}"
tail="{{subroute}}"></app-route>
<h1>Admin</h1>
<ul>
<li><a href="/admin/users">Users</a></li>
<li><a href="/admin/bars">Bars</a></li>
<li><a href="/admin/stepsheets">Stepsheets</a></li>
<li><a href="/admin/events">Events</a></li>
</ul>
<p>subroute: [[subroute]]</p>
<iron-pages role="main" selected="{{subroute.path}}" attr-for-selected="name" selected-attribute="visible" fallback-selection="404">
<demo-list name="list" route="{{subroute}}"></demo-list>
</iron-pages>
</template>
演示列表
<app-route
route="[[route]]"
pattern="/admin/:collection"
data="{{routeData}}"></app-route>
<h1>Collection: [[routeData.collection]]</h1>
编辑 我可能会做一些事情......
<app-location route="{{route}}"></app-location>
<app-route
route="{{route}}"
pattern="/:page"
data="{{routeData}}"
tail="{{subroute}}"></app-route>
<app-route
route="{{subroute}}"
pattern="/:category"
data="{{subrouteData}}"></app-route>
进而
static get observers() { return [
'_routePageChanged(routeData.page)',
'_routeCategoryChanged(subrouteData.category)'
]}
不确定这是否是正确的方法?如果我有一个包含 3 个以上子路由的 url,我觉得这会变得非常麻烦