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

时间:2015-11-20 06:29:51

标签: polymer polymer-1.0

我使用的是最新的聚合物(1.2.0),而且我在从铁局部存储到铁 - 阿贾克斯标题字段的数据绑定方面遇到了麻烦。我在检查请求时没有看到Authorization标头设置。当我创建一个没有数据绑定的有效头文件对象时,我已经验证了请求是否有效。

我做错了什么,或者它的设计是不是像这样使用?

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

3 个答案:

答案 0 :(得分:1)

我认为你的复合绑定中有拼写错误,这是一个更正版本:

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

答案 1 :(得分:1)

不应该&#39; T:

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

取而代之的是:

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

答案 2 :(得分:1)

我找到了一点解决方法。 我正在使用启用了身份验证服务的环回,并且我使用iron-localstorage保存身份验证令牌。我发现的问题是iron-ajax的“自动”让任何(几乎)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为false。加载后,它会成为匹配为真的东西。这也导致iron-ajax标头属性内部发生变化,导致“自动”请求发送被触发。