如果没有其他碳路线活动,则激活默认路线

时间:2016-04-16 22:57:07

标签: polymer carbon-route

由于聚合物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

2 个答案:

答案 0 :(得分:1)

尝试在fallback-selectioniron-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";
        }
    }
});