2017-08-16 26 views
15

Sup! Geri düğmesi bazen polimer projem ile çalışmaz. Düğmeye geri döndüğümde page değişken şu anki sayfadır ve çalışmamı sağlamak için iki veya üç kez düğmeye basmalıyım, örneğin sayfasına /#/home sayfasından giriyorum ama bir kez basınca /#/home'a dönmüyorum Ana sayfaya geri giderken ikinci veya üçüncü kez geri düğmesine basın. İşte benim gözlemci ve yönlendiricidir:Polimer geri düğmesi karma yönlendirme ile çalışmaz

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

Ve bu benim app-route öğedir:

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

Sadece ilk kez çalışmıyor neden anlamaya olamaz. Herhangi bir yardım takdir edilir ve hiç sonuç vermeden çok arama yaptım.

cevap

9

Bunu denediğinizde, <app-route route="{{route}}"></app-route> var mı?

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

Neden her şey çalışıyor?

Dersimi <app-route> kaynak kodunu ayıklayarak öğrendim. Yol boşsa, data güncellenmesi için kod atlanacak - ve gözlemciniz, _routePageChanged(routeData.page), tetiklenmeyecektir. Bunu <app-route> bir kusur olarak kabul edilebilir

bakınız. Her neyse, açık kaynak ve her zaman yolunu bulabilirsin.

+0

Bu cevap! Teşekkür –

+1

Bu satır, 'this.page =' ev '; ', ihmal edilebilir. –

+4

@PooyaRaki Whay Cevap olarak işaretlemiyor musunuz? – jannis

İlgili konular