【问题标题】:Polymer back button doesn't work with hash routing聚合物后退按钮不适用于哈希路由
【发布时间】:2018-01-24 07:26:28
【问题描述】:

喂!后退按钮有时不适用于我的聚合物项目。当我点击返回按钮时,page 变量是当前页面的钢,我需要点击按钮两次或三次才能使其正常工作,例如我从/#/home 转到/#/rules 页面,但它没有去回到/#/home 一旦我第二次或第三次按下后退按钮,它确实会回到主页。这是我的观察者和路由器:

properties: {
    page: {
        type: String,
        reflectToAttribute: true,
        observer: '_pageChanged',
    },
},

observers: [
    '_routePageChanged(routeData.page)',
],

_routePageChanged: function (page) {
        this.page = page || 'home';
        this.set('route.path', `/${this.page}`);
},

_pageChanged: function (page) {
    // Load page import on demand. Show 404 page if fails
    var resolvedPageUrl = this.resolveUrl(page + '.html');
    this.importHref(resolvedPageUrl, null, this._showPage404, true);
    window.history.pushState({}, null, `#/${this.page}`);
},

这是我的app-route 元素:

<app-route route="{{route}}" pattern="/:page" data="{{routeData}}" tail="{{subroute}}"></app-route>

只是无法弄清楚为什么它第一次不起作用。任何帮助表示赞赏,我已经搜索了很多没有结果。

【问题讨论】:

    标签: javascript polymer url-routing polymer-1.0


    【解决方案1】:

    假设你有&lt;app-route route="{{route}}"&gt;&lt;/app-route&gt;,你能试试这个吗?

    observers: [
        '_routePageChanged(route.path)',
    ],
    
    _routePageChanged: function(path) {
        if (path) {
            this.page = this.routeData.page;
        } else {
            /*
             * It's unnecessary to have the following line.
             */
            // this.page = 'home';
            this.set('route.path', '/home');
        }
    },
    

    为什么它会起作用?

    我通过调试&lt;app-route&gt;的源代码吸取了教训。如果路径为空,更新data 的代码将被跳过 - 并且您的观察者_routePageChanged(routeData.page) 不会被触发。见

    您可能认为这是&lt;app-route&gt; 中的一个缺陷。无论如何,它是开源的,您总能找到自己的方式。

    【讨论】:

    • 这就是答案!谢谢
    • this.page = 'home';这行可以省略。
    • @PooyaRaki 感谢您慷慨解囊。请阅读更新后的答案,如果它适合您,请告诉我。
    • 所以他只是问了一个问题,然后删除了自己而不将其标记为答案?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    相关资源
    最近更新 更多