我对铁页和app-route不是很了解所以我会尽力解释这个问题 .
我正在构建一个Web应用程序,内置两个主要的"apps" - 常规用户界面和管理仪表板 . 所以我自然会想要两个不同的主'paths': /admin
和 /home
管理仪表板中应该有一个抽屉,我可以从'categories'列表中选择,并在选择类别时加载特定视图 . 示例 /admin/users
将加载将加载用户列表的视图 . 点击列表页面上的项目后,打开详细信息部分 . 示例 /admin/user/UserA
到目前为止,这是我的结构 . demo-app有铁页,包含HomePage和AdminPage . AdminPage还有包含ListView和DetailView的铁页 .
我可以进入管理页面,但是从“类别”列表中选择后,路线就不会起作用 . 我将我的代码基于Shop Demo
demo-app
<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>
demo-admin
<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>
demo-list
<app-route
route="[[route]]"
pattern="/admin/:collection"
data="{{routeData}}"></app-route>
<h1>Collection: [[routeData.collection]]</h1>
EDIT 我可能会做点什么......
<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个子路由的网址,我觉得这会非常麻烦
EDIT 2
1 回答
在
demo-admin
路由器可能没有按预期工作,因为在
demo-admin
内无法访问demo-app
的route
属性 . 此外patterm="/admin"
是多余的:如果正在加载demo-admin
,则该网址已经是/admin
.您可以将
demo-app
的subroute
属性传递给需要解析子路径的子视图:demo-app.html
demo-admin.html
在
app-route
的documentation中查找更多信息 .