就在我想知道 app-route 是如何工作的时候,我遇到了一个问题,让我怀疑我对这个元素的理解是否正确。
据我了解,保持浏览器 URL 和路由值同步是应用程序位置的责任。如果其中一个更改了应用程序位置,请注意另一个也在更改。
并且因为app-route的route属性,和它的data属性是同步的,下面代码中paper-tabs改变data属性会导致app-route的route属性改变,导致app-location更新浏览器网址。
但是,由于我没有在纸张选项卡中使用 fallback-selection 属性,因此浏览http://localhost会将路径设置为“/”,因此不会显示主页。
所以我想我可以用 ready 函数中的代码重定向 URL。但不幸的是, route.path 确实发生了变化,但 URL 没有。
这是为什么?我该怎么做才能通过函数手动重定向路由?或者换句话说:为什么通过 paper-tabs 元素更改 routeData.subpage 会导致重定向,而不会从函数更改 routeData.subpage?
<dom-module id="polymer-app">
<template>
<style>
:host {
display: block;
}
</style>
<app-location route="{{route}}"></app-location>
<app-route id="ar"
route="{{route}}"
pattern="/:subpage"
data="{{routeData}}"
tail="{{routeTail}}"
active="{{routeActive}}">
</app-route>
<header>
<paper-tabs attr-for-selected="name" selected="{{routeData.subpage}}">
<paper-tab name="home">Home</paper-tab>
<paper-tab name="settings">Settings</paper-tab>
</paper-tabs>
</header>
<section id="main">
<iron-pages attr-for-selected="name" selected="[[routeData.subpage]]">
<home-page name="home"></home-page>
<settings-page name="settings"></settings-pagina>
</iron-pages>
</scection>
</template>
<script>
Polymer({
is: 'polymer-app',
properties: {
route: Object,
routeData: Object,
routeTail: Object,
routeActive: Boolean,
},
ready: function() {
if (this.route.path == "/") {
this.set('routeData.subpage', 'home');
console.log(this.routeData);
console.log(this.route);
}
},
});
</script>
</dom-module>