2015-12-08 15 views
14

Ho un problema con l'elemento ferro-ajax Polymers. Quando si chiama in questo modo:Parametri dell'elemento ferro-ajax del polimero con associazione dati divide il parametro in caratteri singoli

<iron-ajax url="https://api.onedrive.com/v1.0/drive/root" params='{"access_token":"[[access_token]]"}'></iron-ajax> 

Si invia un URL come questo, dividendo l'intera stringa params in più parametri:

https://api.onedrive.com/v1.0/drive/root?0="&1=a&2=c&3=c&4=e&5=s&6=s&7=_&8=t&9=o&10=k&11=e&12=n&13="... 

Quando si utilizza una stringa normale, come parametro funziona correttamente quindi credo che le virgolette sono corrette

La parte copione del elemento che usa il ferro-ajax:

<script> 

    Polymer({ 
    is: 'onedrive-files', 
    properties: { 
    access_token: String 
    }, 

    ready: function() { 
    }, 
}); 
</script> 

e sto chiamando l'elemento come questo:

<onedrive-files access_token="testtoken"> 
</onedrive-files> 

Qualcuno ha qualche idea? Grazie!

Edit: di una funzione di getter:

<dom-module id="onedrive-files"> 
     <template> 
    <iron-ajax id="ajax" url="https://api.onedrive.com/v1.0/drive/root" last-response="{{data}}" params='{{_getParams()}}' auto></iron-ajax> 
    </template> 
    <script> 
    Polymer({ 
     is: 'onedrive-files', 
     properties: { 
     access_token: String 
     }, 

     _getParams: function() 
     { 
     return ('{"access_token":"' + this.access_token + '"}'); 
     }, 

     ready: function() { 
     this.$.ajax.generateRequest();  
    }, 
    }); 

    </script> 
    </dom-module> 

Con l'impostazione del Param nella funzione Ready:

<dom-module id="onedrive-files"> 
    <template> 
    <iron-ajax id="ajax" url="https://api.onedrive.com/v1.0/drive/root" last-response="{{data}}" auto></iron-ajax> 
    </template> 

    <script> 

    Polymer({ 
     is: 'onedrive-files', 
     properties: { 
     access_token: String 
     }, 

     ready: function() { 
     this.$.ajax.params = '{"access_token":"' + this.access_token + '"}'; 
    }, 
    }); 

    </script> 
</dom-module> 
+0

Lo stesso problema qui. Sfortunatamente rovina anche la mia domanda, ma penso che questo dovrebbe essere risolto nelle versioni future. –

+0

Sto affrontando lo stesso problema con ferro ajax 2.0! Mi chiedo cosa dia. –

risposta

7

Sembra che questo è un altro limite di attributi dinamici. Così, il solito ripiego per questi casi sono funzioni getter:

<iron-ajax url="https://api.onedrive.com/v1.0/drive/root" params='{{_getParams(access_token)}}'></iron-ajax> 

...

<script> 

    Polymer({ 
    is: 'onedrive-files', 
    properties: { 
    access_token: String 
    }, 
    _getParams:function(access_token) { 
     return {access_token:access_token}; 
    } 
}); 
</script> 
4

La proprietà params è un oggetto, e sembra che l'analisi dal attributo HTML (che è String) si verifica solo in allegato.

IMHO la soluzione più semplice è impostarla prima di generare la richiesta. Ma imposta un oggetto, non una stringa. Genera un parametro GET per un elemento params Object, un String è un elenco di caratteri, quindi un parametro GET per ogni carattere ...

this.$.myAjaxElement.set('params', {"access_token": this.access_token }); 
this.$.myAjaxElement.generateRequest(); 
Problemi correlati