2016-12-04 18 views
0

私はmy-app.htmlでこれを持っている:ルーティングの問題が

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

それはかなり標準のルーティングです。 (PSK ALA)動的にロードし、含まれるサブページmy-gigs.html

ワン:my-gig.html

<iron-pages id="pageSelector" role="main" selected="[[page]]" attr-for-selected="name" fallback-selection="view404"> 
     ... 
     <my-gig 
     name="gig" 
     route="{{subRoute}}" 
     </my-gig> 

     <my-city 
     name="city" 
     route="{{subRoute}}" 
     </my-city> 

は、私がURLに応じて特定のギグを表示できるようにしたいです。だから、私は持っている:

<app-route route="{{route}}" pattern="/:gigId" data="{{routeDataGig}}" active="{{activeGig}}"></app-route> 

トラブルは、私は(と言う/city/perth-aumy-city.htmlから表示されている)アプリケーション内の別のページに移動するとき、上記のルートはアクティブであるということです(!)。それは、gigIdperth-au(これは明らかに有効なIDではないので完全に間違っています)のようになります。

紛失しています。以前にルーティングで問題が発生した場合は、activeフラグを使用して、そのルートが、実際にはだったかどうかを確認しました。この問題では、/city/perth-au/gig/445454545の両方がmy-gig.htmlのルーティングを満たすため、問題があります。

私が間違っていることは...?その後、

  <iron-ajax 
      id="ajax" 
      auto 
      url="{{_makeUrl(routeDataGig.gigId)}}" 
      handle-as="json" 
      debounce-duration="300" 
      last-response="{{response}}" 
      ></iron-ajax> 

そして:私はこの問題のために使用するソリューションである

_makeUrlIfNotInfo: function(gigId) { 
    if(this.route.prefix != '/gig') return; 
    return '/stores/gigs/' + gigId; 
    } 

答えて

0

のページかどうかを確認するために、私はmy-gig.htmlにチェックを持つことによって、これを「解決」していた瞬間が

広告スラグを処理する前に実際に表示されています。私は<iron-pages>.selectedClass(デフォルトはiron-selectedです)を利用し、オブザーバー内のそのクラスを<app-route>.dataで確認します。 <iron-pages>.selectedAttributeは代替ですが、明示的な設定が必要です。

例えば

// template 
<app-route route="{{route}}" pattern="/:gigId" data="{{routeDataGig}}" active="{{activeGig}}"></app-route> 

// script 
_routeDataChanged: function(routeDataGig) { 
    const isPageSelected = this.classList.contains('iron-selected'); 
    this.gigId = isPageSelected && routeDataGig.gigId; 
} 
+0

それは基本的に私がやっている同じだ - あなたは鉄 - 選択route.prefix' ...私は本当に私は完全に何かをやっていた期待していた 'のではなく、チェックしていることを除いて、愚かな、しかしまあ、明らかに私はそうではありません。 'app-route'は本当に根本的に欠陥があるようです – Merc