我有一个聚合物元素,我想应用一个令牌作为头属性.
当我按下按钮时,将发送XMLHttpReqeust.负责iron-ajax
元素具有headers
带字符串的属性.我想更改字符串,并应用不同的属性.
我被告知正常compound bindings
不起作用,我应该尝试computed bindings
或只是computed properties
.
但问题似乎是问题,如何bind
这些computed properties
或computed bindings
到iron-ajax
元素?
每当我使用花括号时,都不会评估任何内容.如果我将它们遗漏,只剩下剩余的字符串被解析.
这是我的元素:
Computed Binding HeadersProperty: {{computeHeadersProperty(csrfToken)}}Computed Property HeadersProperty: {{headersProperty}}Computed Binding HeadersToken: {{computeHeadersToken(csrfToken)}}Computed Property HeadersToken: {{headersToken}}
正如您所看到的,我已经为完整headers
属性创建了计算绑定和属性,并且还为我想要传递的令牌创建了.
但是当我使用花括号时,铁-ajax元素不会评估任何东西.
这是我到目前为止在iron-ajax
元素中尝试过的内容:
headers ='{"X-CSRF-Token":"{{csrfToken}}"}'//不评估
headers ='{"X-CSRF-Token":"{{headersToken}}"}'//不评估
headers ="{{headersProperty}}"//不评估
headers ="{{computeHeadersProperty(csrfToken)}}"//不评估
headers ='{"X-CSRF-Token":"{{computeHeadersToken(csrfToken)}}"}'//不评估
headers ='{"X-CSRF-Token":"headersToken"}'//评估到 {"X-CSRF-Token": "headersToken"}
headers ='computeHeadersProperty(csrfToken)'//不评估
那么,我如何将属性绑定到元素的headers
属性iron-ajax
?
有些用户已经提供了"工作解决方案",遗憾的是这种解决方案无法正常工作,因为headers
似乎已经设置了,但它并未包括在内headers request
.证明:
将此与我们使用随机字符串的情况进行比较:
这里x-csrf-token
设置得当.
因为无法在提供的JSBIN中检查请求,所以我在这里包含了一个git存储库,其中包含示例代码:https://github.com/LoveAndHappiness/polymer-iron-ajax-issue-159
我必须包含依赖项而不是多字母资源,因为polygit在使用时会抛出错误iron-ajax
.
git clone https://github.com/LoveAndHappiness/polymer-iron-ajax-issue-159.git
打开DevTools并点击请求按钮.您将看到没有设置标头.将iron-ajax
元素更改为第50行的headers属性
headers='{{computeHeadersProperty(csrfToken)}}'
至
headers='{"X-CSRF-Token":"ARandomString"}'
再次点击"请求"按钮并检查Dev-Tools,以查看令牌现在是否已在标头请求中准确设置.
根据控制台的输出判断,错误似乎是,元素中的headings
属性iron-ajax
需要一个Object
,但是数据绑定的评估返回a string
.
我希望有人至少可以重现错误.
该headersProperty
想当Object
,而不是一个String
.
工作示例:http://jsbin.com/rasoqexese/edit?html,output
非常感谢Peter Burns