无法将本地存储数据绑定到 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" 请求发送被触发。
我正在使用最新的 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" 请求发送被触发。