无法将本地存储数据绑定到 iron-ajax headers

Unable to Databind localstorage to iron-ajax headers

我正在使用最新的 Polymer (1.2.0),我在从 iron-localstorage 到 iron-ajax headers 字段的数据绑定方面遇到了问题。我在检查请求时没有看到授权 header 集。当我只创建一个没有数据绑定的有效 headers object 时,我已经验证了请求是否有效。

是我做错了什么,还是它不是为了这样使用而设计的?

<iron-localstorage name="userToken" value="{{localtoken}}" use-raw></iron-localstorage>

<iron-ajax url="api/twitter/v1/private/gettweets" last-response="{{data}}" auto
           headers= '{"Authorization":"Bearer [[localtoken]]}"'
           handle-as="json">
</iron-ajax>
<iron-list items="[[data.futuretweets]]" as="item">
    <template>
        <div>
            datetime: <span>[[item.datetime]]</span>
            text: <span>[[item.text]]</span>
        </div>
    </template>
</iron-list>

我认为您的复合绑定有错别字,这是更正后的版本:

<iron-ajax url="api/twitter/v1/private/gettweets" last-response="{{data}}" auto
           headers= '{"Authorization":"Bearer [[localtoken]]"}'
           handle-as="json">
</iron-ajax>

[编辑] 因为它不起作用,请尝试使用这样的计算函数:

<iron-ajax url="api/twitter/v1/private/gettweets" last-response="{{data}}" auto
           headers='_computeHeaders(localtoken)'
           handle-as="json">
</iron-ajax>

哪里

_computeHeaders(localtoken) {
  return {"Authorization": "Bearer " + localtoken};
}

不应该:

_computeHeaders(localtoken) {
  return '{"Authorization":"Bearer ' + localtoken + '"}';
}

改为:

_computeHeaders: function(localtoken){
  return '{"Authorization":"Bearer ' + localtoken + '"}';
}

我找到了一些解决方法。 我在启用身份验证服务的情况下使用环回,并使用 iron-localstorage 保存身份验证令牌。我发现的问题是 iron-ajax 的 "auto" 在 iron-ajax 参数的任何(几乎)更改时启动请求。当请求开始时,localstorage 值尚未填充

<iron-localstorage name="appdata" value="{{user}}"></iron-localstorage>

<iron-ajax auto="{{user.id}}" headers$='{"Authorization" :"{{user.id}}"}' url="/api/data" handle-as="json" last-response="{{data}}"></iron-ajax>

解决方法在 auto="{{user.id}}" 内。虽然未加载用户,但 user.id 为假。加载后,它会变成与 true 相匹配的东西。这也会导致 iron-ajax header 属性内部发生变化,并导致 "auto" 请求发送被触发。