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