2017-10-10 7 views
0

私はiron-pagesとapp-routerを使用して私を新しいページに送ります。ここで私はiron-ajax要素が必要です。Polymer Ajaxルーティングパラメータからのバインディングが機能しない

しかし、アイアンアヤックスでパラメータ{{parameter.identifier}}を追加しようとすると機能しません。

私はそれがルーティングパラメータがローカルであることと関係があり、iron-ajaxはそれを認識しないと考えていますか? 私はparamのプロパティとゲッター関数を追加しようとしましたが、何も動作していないようです...

また、私はバインディング変数{{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

もっとコードを表示できますか?機密データとURLを難読化することができます。 – Tanbouz

+0

答えをいただきありがとうございます。わかりやすくするために残りのコードを追加しました。 – ChristofferA

+0

と{{parameters.identifier}}の内容は何ですか?それは未定義ですか?これをデバッグするには、 '='の前に '$'記号を追加するだけです。したがって: 'params $ = '{" oslc.where ":" dcterms:識別子= {{parameters.identifier}} " }"。ブラウザのデベロッパーツールでは、実際の結果はどうなるでしょうか。もう1つの質問ですが、 'console.log(this.parameters)'を実行すると、出力は何ですか? –

答えて

0

私は私が見つけることができる何か、

を解決策を見つけたが、鉄AJAXカントのパラメータは、本当にダイナミック入力を扱うことだったので、最終的に、私はそれがゲッター機能での作業です。 新しい一時的な文字列を最初に追加し、それを修正できた文字列を返すことによって、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は」でした誰かがこれを説明することができれば、それは非常に高く評価されるだろう!

0

あなたはそれをしました、そうです。関数_getParamsがクエリ文字列全体を返すのは正常です。

_getParams機能の内部では、あなたが{{_getParams(parameter)}}を結合から引数としてその関数にidentifierを渡しているので、this.parameter.identifierだけparameter.identifierを使用する必要はありません。 this.parameterが変更されるたびに、機能_getParamsが自動的に呼び出されるため、これは素晴らしいアプローチです。そうでなければ再び変更することはできませんparamsiron-ajax

関連する問題