【发布时间】:2016-11-15 11:56:58
【问题描述】:
就路由而言,我的 app.js 中有这个:
<app-location route="{{route}}"></app-location>
<app-route
route="{{route}}"
pattern="/page/:page"
data="{{routeData}}"
tail="{{subRoute}}">
</app-route>
在入门工具包中,我观察routeData.page 以确保this.page 已同步。
...
observers: [
'_routePageChanged(routeData.page)',
],
_routePageChanged: function(page) {
this.page = page;
}
...
然后我创建两个页面,用 iron-pages 选择:
<iron-pages id="pageSelector" role="main" selected="[[page]]" attr-for-selected="name" fallback-selection="view404">
<my-offers-made
title="Offers made"
name="offers-made"
user-data="{{userData}}"
site-info="{{siteInfo}}"
route="{{subRoute}}">
</my-offers-made>
<my-chat
title="Chat"
name="chat"
user-data="{{userData}}"
site-info="{{siteInfo}}"
route="{{subRoute}}">
</my-chat>
</iron-pages>
注意:潜在错误:他们都共享subRoute。
my-chat 可能会显示活动对话列表或特定用户的消息。所以,在my-chat 我有:
<app-route
route="{{route}}"
pattern="/:userId"
data="{{routeData}}"
active="{{active}}">
</app-route>
然后,my-chat 只是根据userId 检查要显示的内容。
my-offers-made 有不同的标签。所以:
<app-route
route="{{route}}"
pattern="/:tab"
data="{{routeData}}">
</app-route>
它会显示正确的标签。
问题是如果我在my-offers-made 中更改标签,然后转到my-chat,routeData.userid 被来自my-offers-made 的标签名称污染 因为他们分享了@987654337@。
我显然做错了什么非常。我是不是一定要为每条路线补上不同的尾巴,这样它们才不会互相污染?
<app-route route="{{route}}" pattern="/page/:page" data="{{routeData}}"></app-route>
<app-route route="{{route}}" pattern="/page/chat" data="{{routeData}}" tail="{{subRouteChat}}"></app-route>
<app-route route="{{route}}" pattern="/page/my-offers-made" data="{{routeData}}" tail="{{subRouteOffersMade}}"></app-route>
...?还是我在这里错过了一些非常大的东西?
【问题讨论】:
标签: javascript routing polymer