聚合物Ajax绑定路由参数不起作用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了聚合物Ajax绑定路由参数不起作用相关的知识,希望对你有一定的参考价值。
我正在使用iron-pages和app-router将我发送到一个新页面,我需要一个iron-ajax元素来发送一个请求,其中包含从路由器发送的参数。
但是,当我尝试在iron ajax中添加我的参数{{parameter.identifier}}时,它不起作用。
我怀疑它与路由参数是本地的有关,而铁-ajax看不到它?我试图为param添加一个属性,以及一个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>
我找到了解决方案,
我能找到的是,iron-ajax中的参数无法真正处理动态输入,所以最终我得到了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
以上是关于聚合物Ajax绑定路由参数不起作用的主要内容,如果未能解决你的问题,请参考以下文章
绑定数据库时,Devbridge 自动完成 ajax 不起作用