路由参数不起作用的聚合物Ajax绑定
我正在使用iron-pages和app-router将我发送到一个新页面,在那里我需要一个iron-ajax元素来发送一个请求,其中包含路由器发送的参数。路由参数不起作用的聚合物Ajax绑定
但是,当我尝试添加我的参数{{parameter.identifier}}在铁ajax它不起作用。
我怀疑它与本地路由参数有关,并且iron-ajax没有看到它? 我已经尝试添加一个属性的参数和一个getter函数,但似乎没有工作...
此外,我知道ajax是正确的,因为如果我更改绑定变量{{parameter.identifier} }到一个存在于它查询的数据库中的值。
<dom-module id="cst-data">
<template>
<style>
</style>
<triplat-route name="dataRoute" params="{{parameters}}"></triplat-route>
<iron-ajax
id="getData"
auto
url="http:/.../oslc/os/OSLCPERSON?"
params='{"oslc.where":"dcterms:identifier={{parameters.identifier}}"
}'
headers='{"Content-Type": "application/json;charset=utf-8"'
handle-as="json"
on-response="handleResponse"
></iron-ajax>
<paper-card>{{parameters.identifier}}</paper-card>
<paper-card>{{dataRes.name}}</paper-card>
</template>
</dom-module>
<script>
Polymer({
is: "cst-data" ,
handleResponse: function() {
this.dataRes = this.$.getData.lastResponse['rdfs:member'];
}
});
</script>
我找到了解决办法,
我能找到的是,在铁阿贾克斯倾斜参数真正处理动态输入,所以最终我得到了它与一个getter函数工作。 然后,另一个问题出现在getter返回的是输入字符而不是查询字符串,首先添加一个新的临时字符串并返回字符串,我可以修复它。
<triplat-route id="maximoDataRoute" name="maximo-data" params="{{parameter}}"></triplat-route>
<iron-ajax
id="ajax"
url="http://.../"
headers='{"Content-Type": "application/json;charset=utf-8"'
handle-as="json"
params$='{{_getParams(parameter)}}'
on-response="handleResponse"
auto></iron-ajax>
<script>
Polymer({
is: "cst-employee-maximo-data" ,
properties: {
res: Object,
tempString: String,
parameter :{
type: Object,
notify: true
},
},
handleResponse: function (event) {
console.log("Entering handleResponse")
this.res = event.detail.response['member'];
console.log(this.res)
},
_getParams: function(parameter) {
this.tempString = '{"oslc.where":"dcterms:identifier='+ this.parameter.identifier+'","oslc.select":"*"}'
console.log("tempString: "+this.tempString)
return this.tempString
}
});
</script>
我注意到另一个有趣的事情是,在功能_getParameters,我必须输入一个参数,这并不重要,我输入,但如果没有它,在“parameter.identifier”是身份不明,如果有人能解释这一点,将不胜感激!
方式,你做到了,是对的。功能_getParams
返回整个查询字符串是正常的。
内_getParams
功能,您无需使用this.parameter.identifier
但只有parameter.identifier
因为你逝去identifier
成函数作为参数从绑定{{_getParams(parameter)}}
。这是很好的方法,因为每当this.parameter
更改时,都会自动调用功能_getParams
。否则,您将无法再次更改params
iron-ajax
您能否显示更多代码?您可以混淆敏感数据和网址。 – Tanbouz
感谢您的回答,为了清晰起见,我添加了其余的代码。 – ChristofferA
它是什么填写{{parameters.identifier}}?它没有定义?如果你想调试这个,你可以简单地在'='之前加'$'符号。所以:'params $ ='{“oslc.where”:“dcterms:identifier = {{parameters.identifier}}” }''。您将能够在浏览器中的开发人员工具中查看实际结果。还有一个问题,当你做'console.log(this.parameters)'输出是什么? –