Polymer iron-ajax element params with data binding 将参数拆分为单个字符
Polymer iron-ajax element params with databinding is splitting the parameter into single chars
聚合物铁-ajax元素有问题。
像这样调用时:
<iron-ajax url="https://api.onedrive.com/v1.0/drive/root" params='{"access_token":"[[access_token]]"}'></iron-ajax>
它像这样发送一个url,将整个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>
有人有什么想法吗?
谢谢!
编辑:
使用 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>
在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>
这似乎是动态属性的另一个限制。因此,这种情况下通常的回退是 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>
params 属性 是一个对象,看起来 html 属性(字符串)的解析只发生在附件上。
恕我直言,最简单的解决方案是在生成请求之前进行设置。
但是设置一个对象,而不是一个字符串。它会为params对象的每个元素生成一个GET参数,一个String是一个字符列表,所以每个字符一个GET参数...
this.$.myAjaxElement.set( 'params', {"access_token": this.access_token });
this.$.myAjaxElement.generateRequest();
聚合物铁-ajax元素有问题。 像这样调用时:
<iron-ajax url="https://api.onedrive.com/v1.0/drive/root" params='{"access_token":"[[access_token]]"}'></iron-ajax>
它像这样发送一个url,将整个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>
有人有什么想法吗? 谢谢!
编辑: 使用 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>
在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>
这似乎是动态属性的另一个限制。因此,这种情况下通常的回退是 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>
params 属性 是一个对象,看起来 html 属性(字符串)的解析只发生在附件上。
恕我直言,最简单的解决方案是在生成请求之前进行设置。 但是设置一个对象,而不是一个字符串。它会为params对象的每个元素生成一个GET参数,一个String是一个字符列表,所以每个字符一个GET参数...
this.$.myAjaxElement.set( 'params', {"access_token": this.access_token });
this.$.myAjaxElement.generateRequest();