2016-06-06 4 views
0

Как я могу программно изменить текущее местоположение?Изменение текущего местоположения программно

app-location находится на родительском элементе, и я хочу изменить его из дочернего элемента.

здесь родительская выдержка

dom-module(id='test', assetpath='/') 
    template 
     app-location(route='{{route}}') 
     app-route(route='{{route}}', pattern='/:page', data='{{rootData}}', tail='{{rootTail}}') 
     ... 
     login-page(name='login', route='[[rootTail]]') 
     ... 
    script. 
     Polymer({is: 'test'); 

и ребенок

dom-module(id='login-page') 
    template 
     div(class='layout horizontal center-justified mh400') 
      div(class='layout vertical center-justified') 
       form(is='iron-form', id='login-form', method='post', action='/api/auth/login', on-iron-form-response='onResponse') 
        ... 
    script. 
     Polymer({ 
      is: 'login-page', 
      onResponse: function (event) { 
       var resp = event.detail.response; 

       if (resp.success) { 
        // Change here the location 
       } 
      } 
     }) 

К сожалению по Джейд вместо HTML, но дать понять, я думаю.

ответ

1

app-location просто взаимодействует с панелью местоположения браузера. Он использует внутри себя iron-location. Ничто не мешает вам включить его в дочерний элемент. Здесь нужно обновить панель местоположений (вместо прослушивания изменений). В своем JavaScript выберите элемент и обновите его path.

The app-location в родительском элементе обнаружит изменение в строке адреса и обновления route

dom-module(id='login-page') 
    template 
     app-location 
     div(class='layout horizontal center-justified mh400') 
      div(class='layout vertical center-justified') 
       form(is='iron-form', id='login-form', method='post', action='/api/auth/login', on-iron-form-response='onResponse') 
        ... 
    script. 
     Polymer({ 
      is: 'login-page', 
      onResponse: function (event) { 
       var resp = event.detail.response; 

       if (resp.success) { 
        // TODO: Update with your new path 
        this.shadowRoot.querySelector('app-location').path = ''; 
       } 
      } 
     }) 
Смежные вопросы