2017-08-16 1 views
15

Sup!ポリマープロジェクトでバックボタンが動作しないことがあります。私が戻るボタンを押すとpage変数がスチール現在のページと私は/#/rulesページから/#/homeに行くが、それは私がプレスした後には戻っていないが、例えばそれを働かせるためにボタンを2〜3回押す必要がある戻るボタンは、メインページに戻って2回目または3回目に戻ります。ポリマーバックボタンがハッシュルーティングで機能しない

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> 

それが最初に動作しない理由だけでは把握することはできません。どんな助けもありがたいです。私はすでに多くの検索結果を出しています。

答えて

9

<app-route route="{{route}}"></app-route>があると仮定してこれを試すことができますか?

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'); 
    } 
}, 

なぜそれはまったく機能しますか?

<app-route>のソースコードをデバッグしてレッスンを受けました。パスが空の場合、dataの更新コードはスキップされ、オブザーバ_routePageChanged(routeData.page)はトリガされません。あなたはそれが<app-route>の欠陥であると考えるかもしれ

を参照してください。それはオープンソースなので、いつでも自分の道を見つけることができます。

+0

これが答えです!ありがとう –

+1

'this.page = 'home';'行は省略できます。 –

+4

@PooyaRaki Whayあなたはそれを答えとしてマークしていませんか? – jannis