由于聚合物1.4碳路线可用,可用于导航:
<carbon-location
route="{{route}}"
use-hash-as-path>
</carbon-location>
<carbon-route
route="{{route}}"
pattern="/tabs/:tabName"
data="{{data}}">
</carbon-route>
但是,如果最初加载页面时没有任何路由匹配,则路由更改时不会更新URL。
当没有其他路线匹配时,有没有办法选择默认路线?
例如,在超额路线中,这可以通过以下方式完成:
<excess-route
route="/(.*)"
redirect-to="/default"
activation-modifiers="x">
</excess-route>
看起来这是一个悬而未决的问题,有一个很好的解决方法吗? https://github.com/PolymerElements/carbon-route/issues/68
答案 0 :(得分:1)
尝试在fallback-selection
或iron-pages
等铁选择项上使用新的paper-tabs
属性:https://github.com/PolymerElements/iron-selector/blob/master/iron-selectable.html#L121
在撰写本文时,此属性非常新,并且尚未在元素指南中使用。您可能还需要在本地进行bower更新以获取新代码。
答案 1 :(得分:0)
回答自己的问题,以下内容可以作为解决方法使用:
...
<carbon-location
route="{{route}}"
use-hash-as-path>
</carbon-location>
<carbon-route
route="{{route}}"
pattern="/tabs/:tabName"
data="{{data}}">
</carbon-route>
<paper-tabs
selected="{{data.tabName}}"
attr-for-selected="key">
<paper-tab key="foo">Foo</paper-tab>
<paper-tab key="bar">Bar</paper-tab>
</paper-tabs>
...
Polymer({
...
properties: {
data: {
type: Object,
observer: "_onData"
}
},
_onData: function (newValue, oldValue) {
if (! newValue.tabName) {
window.location = ("" + window.location).replace(/\#.*$/, "") + "#/tabs/foo";
}
}
});