2016-09-24 3 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'}으로 설정된다는 것입니다. 이 시점에서 routeactive이 아니므로 routeDataroute.path에 다시 매핑되지 않고 app-location을 통해 URL로 피드백됩니다. 결국 다시 돌아 오면 routeData으로 변경되지 않으므로 관찰자가 변경되지 않았다는 것을 알려주지 않습니다.

+0

당신이 옳았습니다. 폴리머 요소 수명주기의 일부인 "부착 된"이벤트를 사용해야했습니다. 이 이벤트는 "요소가 문서에 첨부 된 후"발생합니다. 문제에 대해 알려 주셨으므로 답변을 드리고 싶지만 많은 게시물은 관련이 없습니다. 내가 한 말을 분명히하기 위해 뭔가를 할 수 있다면 해답을 줄거야. –

+0

나는 당신이 말한 것을 이해하고 모든 관련 물건을 제거했으면 좋겠습니다. – akc42

관련 문제