1

由于 Polymer 1.4 carbon-route 可用,可用于导航:

<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

4

2 回答 2

1

fallback-selection尝试在 Iron-selectables 上使用新属性iron-pages,例如paper-tabshttps ://github.com/PolymerElements/iron-selector/blob/master/iron-selectable.html#L121

在撰写本文时,此属性非常新,尚未出现在元素指南中。您可能还需要在本地进行凉亭更新以获取新代码。

于 2016-04-18T19:37:56.613 回答
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";
        }
    }
});
于 2016-04-17T01:24:50.977 回答