2016-09-24 6 views
0

Я использую Polymer и пытаюсь настроить приложение-маршрутизатор. Я не могу заставить приложение направлять пользователя на целевую страницу.Маршрутизация на целевую страницу

Я проверил все остальные части отдельно, поэтому я знаю, что мои страницы будут визуализированы.

<dom-module id="app-body"> 
    <template> 
     <app-location route="{{route}}" use-hash-as-path></app-location> 
     <app-route route="{{route}}" pattern="/:page" data="{{data}}"></app-route> 

     <iron-pages id="content-pages" selected="{{data.page}}" attr-for-selected="name"> 
      <landing-page name="landing"></landing-page> 
      <lobby-page name="lobby"></lobby-page> 
     </iron-pages> 

</template> 

    <script> 
     window.addEventListener('WebComponentsReady', function() { 
      Polymer({ 
       is: 'app-body', 
       properties: { 
        data: { 
         type: Object, 
         value: function() { 
           return { 
           page: '/landing' 
           }; 
          notify: true 
         } 
        } 
       }, 

       observers: [ 
        '_onRoutePathChanged(route.path)' 
       ], 

       _onRoutePathChanged: function(path) { 
        // If we do not have an initial URL, we redirect to /landing 
        if (!path) { 
        this.set('route.path', '/landing/'); 
        } 
       } 
      }); 
     }); 
    </script> 
</dom-module> 

ответ

1

Во-первых, у вас, похоже, есть такое же заблуждение, что и для передачи свойств вниз, вам нужно сообщить об истине. Это не так, вам нужно только указать true для экспорта из вашего элемента в родительский элемент, который его использует. В вашем случае это не нужно.

Что может быть может быть, так это то, что routeData устанавливается в {page: '/landing'} во время инициализации элемента. В этот момент route не active, поэтому routeData не отображается обратно на route.path и отправляется обратно через app-location на адрес. Когда он, в конце концов, переместится обратно, нет никакого изменения на routeData, чтобы наблюдатель не загорелся, чтобы сообщить, что он изменился.

+0

Вы были правы. Мне пришлось использовать «прикрепленное» событие, которое является частью жизненного цикла полимерного элемента. Это событие происходит «после прикрепления элемента к документу» Я хотел бы дать вам ответ, потому что вы опрокинули меня на вопрос, но многие ваши сообщения не связаны. если бы вы могли что-то сделать, чтобы разъяснить, что я сказал, я дам вам ответ. –

+0

Надеюсь, я понимаю, о чем вы говорили, и удалил все необходимые материалы. – akc42