2016-10-13 4 views
1

ページURLから取得した数値に従って、iron-ajax要素内のURLを変更しようとしています。これを行うには、取得した番号をとる計算されたプロパティでURLを作成しています。
私が抱えている問題は、プログラムでプロパティ内の値(URLに追加される数値)を変更する方法がわかりません。それを回避するために、私は自分のHTMLの中にNumberを設定しようとしました、そして、データはそれをプロパティにバインドします。しかし、私はどちらかを働かせることはできません。

私のプロパティ内でuserIdの値をハードコードすると、すべて正常に動作するので、間違いがデータバインディングである必要があります。誰かが私が間違っている方向に私を向けることができれば素晴らしいだろう。しかし、プログラムでuserIdの値を設定するなどの優れた解決策がある場合は、教えてください。プロパティ値をプログラムで変更するか、データをポリマーにバインドします。

<dom-module id="my-profile-view"> 

    <template> 
    <style></style> 

    <iron-ajax 
     auto 
     id="requestSingleUser" 
     url="{{url}}" 
     handle-as="json" 
     last-response="{{response}}"></iron-ajax> 

    <span id="stdNr" userId="{{55}}"></span> 

    </template> 

    <script> 
    Polymer({ 
    is: 'my-profile-view', 

    properties: { 
     route: Object, 

     userId: { 
     value: '', 
     notify: true 
     }, 

     url: { 
     computed: 'computeURL(userId)' 
     }, 

    }, 

    ready: function() { 
     //Get's the URL and strips it down to the nuber 
     var getUrl = window.location.href; 
     var stdudentNumber = getUrl.split("/").pop(); 

     //Set the number to then bind it back to the value inside the properties 
     var stdId = this.$$("#stdNr"); 
     stdId.setAttribute('userId','{{20}}'); 
    }, 

    computeURL: function(userId) { 
     return['http://api.dev/user/' + userId]; 
    }, 

    }); 
    </script> 
</dom-module> 

答えて

0

いくつかの問題があります。

は、私はそれが

userId: { 
    type: String, 
    value: '' 
} 

は、その後、あなたのレディ機能であなたはこの

ような何かを考えなければなりません、それはあなたの userIDプロパティが正しく定義されていないこの

<span id="stdNr">[[userId]]</span> 

ようにすべきだと思います

ready: function() { 
    //Get's the URL and strips it down to the nuber 
    var getUrl = window.location.href; 
    //Set the number to then bind it back to the value inside the properties 
    this.userId = getUrl.split("/").pop(); 
}, 

最後に、関数を計算すると、配列

computeURL: function(userId) { 
    return 'http://api.dev/user/' + userId; 

が、あなたが本当にそれだけでアプリケーションの残りの部分から来て、同じドメインに相対的ではありません、URL内の完全なドメイン名を配置する必要がありますか?私はあなたの方法は、よりクリーンで明らかスパン で1セットで値をバインドしようとしましたので

this.userIdの設定が自動的に計算されたURLの作業を行いますakc42 @

+0

おかげで、私はプロパティに真の通知を追加しました私の試みは冗長になります。 URLに関しては、ユーザーがクリックされたときにユーザーを表示してプロフィールを開くページがあります。現時点では、クリックされたIDを私のURLに渡します。表示されているページは、URLをIDまで削除してデータを要求します。それはapiのURLとは異なるので、私はまだ完全なドメインパスが必要な理由です。 しかし、Polymerでセッションを使用する方法の例を見つけたら、それを変更します。 – Niklas

+1

呼び出しページのURLがいつ変わるかを知る必要があります。これはちょっと複雑ですが、ウィンドウのpopstateイベントにイベントリスナーを追加するか、 'path 'を変数として公開する' 'を詳しく見てくださいオブザーバーをオンにする。通知は、要素の外部に通知する必要がある場合はプロパティでのみ必要であり、要素内であれば必要ではない - 自動的に発生する – akc42

関連する問題