2017-06-11 70 views
0

我试图实现使用下面的代码路由:聚合物路由 - 历史管理

HTML : 

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

<iron-pages 
selected="[[page]]" 
attr-for-selected="name" 
fallback-selection="view404" 
role="main"> 
     <my-view1 page="{{page}}" name="view1"></my-view1> 
     <my-view2 page="{{page}}" name="view2"></my-view2> 
     <my-view404 page="{{page}}" name="view404"></my-view404> 
</iron-pages> 

和脚本是:

static get observers() { 
    return [ 
     '_routePageChanged(routeData.page)', 
    ]; 
    } 
_routePageChanged(page) { 
    // Polymer 2.0 will call with `undefined` on initialization. 
    // Ignore until we are properly called with a string. 
    /*if (page === undefined) { 
     return; 
    }*/ 

    // If no page was found in the route data, page will be an empty string. 
    // Deault to 'view1' in that case. 
    this.page = page || 'home'; 
    document.body.scrollTop = document.documentElement.scrollTop = 0; 
    // Close a non-persistent drawer when the page & route are changed. 
    /*if (!this.$.drawer.persistent) { 
     this.$.drawer.close(); 
    }*/ 
} 

_pageChanged(page) { 
    // Load page import on demand. Show 404 page if fails 
    var resolvedPageUrl = this.resolveUrl('my-' + page + '.html'); 
    Polymer.importHref(
     resolvedPageUrl, 
     null, 
     this._showPage404.bind(this), 
     true); 
} 

一切工作正常,但是当我尝试第二次访问查看(view2)然后使用浏览器后退按钮。只有屏幕上的网址发生变化,但不是视图。我看着它,发现_routePageChanged(page)方法没有被调用。有任何想法吗?

一个奇怪的观察,我在运行Apache 2.4.23的远程服务器上遇到问题,但在本地主机上运行的Apache 2.4.18或Nginx上没有遇到问题。我不确定这些信息是否相关。

回答