路由参数不起作用的聚合物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> 
+0

您能否显示更多代码?您可以混淆敏感数据和网址。 – Tanbouz

+0

感谢您的回答,为了清晰起见,我添加了其余的代码。 – ChristofferA

+0

它是什么填写{{parameters.identifier}}?它没有定义?如果你想调试这个,你可以简单地在'='之前加'$'符号。所以:'params $ ='{“oslc.where”:“dcterms:identifier = {{parameters.identifier}}” }''。您将能够在浏览器中的开发人员工具中查看实际结果。还有一个问题,当你做'console.log(this.parameters)'输出是什么? –

我找到了解决办法,

我能找到的是,在铁阿贾克斯倾斜参数真正处理动态输入,所以最终我得到了它与一个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。否则,您将无法再次更改paramsiron-ajax