我最近在将数据从input元素绑定到iron-ajax的“body”属性时遇到了问题。 当我在聚合物0.5上使用core-ajax时,我可以很容易地绑定这样的值:
<core-ajax
id="ajax"
method="POST"
contentType="application/json"
url="{{url}}"
body='{"username":"{{username}}", "password":"{{password}}"}'
handleAs="json"
on-core-response="{{responseHandler}}">
</core-ajax>
现在我尝试用铁-ajax做同样的事情。但它会逐字地发送“{{username}}”和“{{password}}”而不是其值。这是代码:
<iron-ajax
id="ajax"
method="POST"
contentType="application/json"
url="{{url}}"
body='{"username":"{{username}}", "password":"{{password}}"}'
handle-as="json"
on-response="responseHandler">
</iron-ajax>
如何让它发挥作用?谢谢你的答案:)
答案 0 :(得分:5)
您可以为ajax主体声明计算属性。像这样
properties: {
...
ajaxBody: {
type: String,
computed: 'processBody(username, password)'
}
},
processBody: function(username, password) {
return JSON.stringify({username: username, password:password});
}
然后将其添加到iron-ajax
上<iron-ajax ... body="{{ajaxBody}}"></iron-ajax>
答案 1 :(得分:0)
另一种选择是使用Computed Bindings
您的代码看起来像这样:
<iron-ajax
...
body="{{getAjaxBody(username, password}}}"
>
</iron-ajax>
<script>
Polymer({
.....
getAjaxBody: function(username, password) {
return JSON.stringify({username: username, password: password});
}
})
</script>