2016-06-06 21 views
0

Wie kann ich den aktuellen Speicherort programmgesteuert ändern?Aktuellen Speicherort programmgesteuert ändern

Die app-location ist auf Elternelement und ich möchte es vom Kindelement ändern.

hier ist Mutter Auszug

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'); 

und das Kind

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 
       } 
      } 
     }) 

Leider von der Jade statt html aber zu verstehen geben, denke ich.

Antwort

1

app-location verbindet sich einfach mit der Adressleiste des Browsers. Es verwendet iron-location intern. Es gibt nichts, was dich davon abhält, es auch in das Child-Element aufzunehmen. Hier besteht die Rolle darin, die Adressleiste zu aktualisieren (anstatt Änderungen zu hören). Wählen Sie in Ihrem JavaScript das Element aus und aktualisieren Sie dessen path.

The app-location im Mutterelement wird die Änderung in der Adressleiste erkennen und 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 = ''; 
       } 
      } 
     }) 
zu aktualisieren,
Verwandte Themen