2015-12-08 47 views
14

我有一個聚合物鐵ajax元素的問題。 當調用它像這樣:帶數據綁定的聚合物鐵 - 阿賈克斯元素參數將參數分成單個字符

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

它發出這樣的網址,整個PARAMS字符串分割成多個參數:

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="... 

當使用普通的字符串作爲參數,它能夠正常工作,所以我猜報價是正確的。

元素的腳本的一部分,它使用的鐵AJAX:

<script> 

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

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

和我打電話這樣的元素:

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

有沒有人有什麼想法? 謝謝!

編輯: 隨着吸氣功能:

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

隨着就緒功能設置帕拉姆:

<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

這裏同樣的問題。不幸的是,它也弄亂了我的查詢,但我認爲這應該在未來的版本中得到修復。 –

+0

我正面臨與鐵ajax 2.0相同的問題!我不知道是什麼給了。 –

回答

7

看起來這是動態屬性的另一個限制。因此,對於這類案件通常是後備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

params屬性是一個對象,它看起來像從HTML屬性解析(這是字符串)只發生在附件上。

恕我直言,最簡單的解決方案是在生成請求之前設置它。 但設置一個對象,而不是一個字符串。它會生成一個GET參數foreach元素的params對象,一個字符串是一個字符列表,所以每個字符一個GET參數...

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