2016-07-24 14 views
2

上の変更ルート、私は次のような構造を持つプロジェクトでhttps://github.com/PolymerElements/app-routeからアプリルート要素を使用しています:ポリマー、連鎖アプリルート要素

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

<iron-pages selected="[[page]]" attr-for-selected="name"> 
    <store-main-page 
    name="loja" 
    route="{{subroute}}" 
    categories="[[categories]]"> 
    </store-main-page> 
    ... 
</iron-pages> 
... 
:次のコードを含む

my-app要素

store-main-page要素で:ウェルカムページが表示されますので、

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

<iron-pages selected="[[page]]" attr-for-selected="name"> 
    <category-page 
    name="categoria" 
    route="{{subroute}}" 
    selected-category="{{selectedCategory}}" 
    cart="{{cart}}"> 
    </category-page> 
    ... 
</iron-pages> 
... 

、アクセス/パス/loja/categoriaにアクセスすると、my-appcategory-pageを呼び出すstore-main-pageを呼び出します。

私の問題は、store-main-pageを表示する前にユーザーを認証し、ユーザーが認証されていない場合は、彼を/のウェルカムページにリダイレクトすることです。 app-routeを使用してこれを行う方法はありますか?

私はapp-routeを使用してページを変更した唯一の方法は、

this.set('route.path', 'path'); 

を呼び出すことです。しかし、これは連鎖ルート上では動作しません、私の状況で、これはものではありません/loja/パスにリダイレクトになりますが欲しいです。

親要素のルートを変更するにはどうすればよいですか?それは可能ですか?

答えて

3

app-locationは、iron-locationapp-routeの間の単なるインターフェイスであることが分かりました。

私は子供の要素にiron-locationを追加し、そのpathプロパティを変更する問題を解決しました。

正確なコードされた:

<iron-location id="ironLocation"></iron-location> 
... 
</template> 

<script> 
... 
    attached: function() {      
    if (!userAuth()) {    
     this.$.ironLocation.set('path', '/');    
    } else { 
     ... 
    }          
    } 
... 

これは理想的なソリューションである場合、私は知りませんが、それは動作します。

関連する問題