我面临的问题是,我的应用程序内的路由不能正常工作......为了更好的可读性,我省略了一些现在不需要的代码我重新命名了我的元素。让我们先来看看代码,我会解决以后的问题:铁选择器/应用程序路线:奇怪的行为
我定制-frame.html
...
<app-location route="{{route}}" use-hash-as-path></app-location>
<my-application route="{{route}}"></my-application>
...
我-application.html
...
<iron-selector selected="{{pageData.page}}" attr-for-selected="name" fallback-selection="home">
<paper-icon-item name="home">
<iron-icon src="/images/icon_home.png" item-icon slot="item-icon"></iron-icon>
</paper-icon-item>
<paper-icon-item name="subpage">
<iron-icon src="/images/icon_subpage.png" item-icon slot="item-icon"></iron-icon>
</paper-icon-item>
</iron-selector>
...
<app-route route="{{route}}" pattern="/:page" data="{{pageData}}" tail="{{pageTail}}"></app-route>
...
<iron-lazy-pages id="pages" load-async="true" class="fit" selected="[[pageData.page]]" attr-for-selected="data-page" restamp="true">
<template data-page="home" is="iron-lazy-page" path="{{resolveUrl('../home-view.html')}}">
<home-view></home-view>
</template>
<template data-page="subpage" is="iron-lazy-page" path="{{resolveUrl('../subpage-view.html')}}">
<subpage-view></subpage-view>
</template>
</iron-lazy-pages>
...
而在home-view
和subpage-view
里面,我也有一个处理页尾的app-route
元素,就像这里的subpage-view
:
子页面,view.html
...
<app-route route="{{route}}" pattern="/:page" data="{{routeData}}" tail="{{subroute}}"></app-route>
...
现在的问题:
当用户进入页面,他被转到#/home
(我有一个观察员my-custom-frame
该观察route
并设置route.path
到home
如果它是空的 - 我也有在iron-selector
后备):
我定制-frame.html
Polymer({
is: "my-custom-frame"
properties: {
route: {
type: Object,
observer: 'routeChanged',
notify: true
}
},
_checkRoute: function() {
if (this.route.path === '') {
this.set("route.path", "/home");
}
},
onRouteChanged: function() {
this._checkRoute();
}
}
一切现在工作得很好。如果用户现在点击subpage
-icon,他会被重定向到#/subpage
,并且在subpage-view
的内部,我还会观察到route
并将其重定向到#/subpage/list
。这也很好,只要他留在subpage
-context。 意思是,如果他点击home
-icon,他会被重定向到#/home/list
,但home-view
没有任何路由逻辑。这只是一个没有观察者,听众或其他任何东西的静态页面。
之后,再也没有任何工作了,用户被迫重新加载页面或手动切断尾部url部分(/list
)以便再次浏览页面。
我在寻找了几个小时或几天的解决方案了,但我不出来...
随意问任何问题,如果我的解释是,像一个谜;-)
任何帮助表示赞赏,谢谢!
UPDATE
我减少我的代码铅丹,而是一个工作的例子。 您可以检出的代码上GitHub,运行polymer serve
与再现:选择
- 打开
http://localhost:8080
- 首页。
- 点击的子页面,如预期
- 点击首页网址更改为
#/subpage/childone/list
,网址更改#/home
,如预期 - 点击的子页面再看看,网址更改为
#/home/childone/list
也许这会更容易解释你实际上想要实现什么?你知道,更抽象,技术水平较低。 – craPkit
正确的路由;-)请参阅我的问题底部的更新。我希望应用程序在点击主页图标时总是路由到'#/ home',并且当点击子页面图标时总是到'#/ subpage'。如上所述,这不能正常工作。 – sebastian
我想你可以在'_checkRoute()'中处理#/ home/list(或者更通用的东西,使用正则表达式),然后去掉那里的“/ list”。 – craPkit