2017-05-26 7 views
1

ember.jsでどのようにクエリパラメータを動的に更新しますか?動的にクエリパラメータを更新する

export default Ember.Controller.extend({ 
    myQuery: "test", 

    queryParams: ["myQuery"], 

    actions: { 
     click() { 
      this.set("myQuery", "update query param"); 
     } 
    } 
}); 


export default Ember.Route.extend({ 
    queryParams: { 
    myQuery: { refreshModel: true } 
    }, 
    model(params) { 
    console.log(params) 
    } 
}); 

私が間違っていない限り、アクションが発生するとモデルフックを再度呼び出す必要がありますか?

Please find an example hereに移動し、/testルートに移動し、ボタンをクリックします。コンソールの中で、モデルのフックが再び起動されないことがわかります。

答えて

3

あなたの問題は、あなたがmy-buttonコンポーネントにアクションを渡すためにactionヘルパーを使用してtest.hbs内からclick=actions.clickのようなアクションを渡していないという事実と関連しています。あなたがそうするとき。 click関数に対して実行するコンテキストは、Emberjsによって正しく設定されていません。つまり、コードをデバッグしてそのコードを表示する場合です。あなたの回転の中のこの文脈clickの内部のtest.jsコントローラ内の動作は実際にmy-buttonのコンポーネントに設定されます。これは、プロパティがmy-buttonのコンポーネントに設定されていることを意味します。コントローラーのプロパティーには何もしません。コントローラのプロパティは更新されないので、モデルフックはrefreshModel: trueと宣言しても再度実行されません。

あなたは何ができますか? actionヘルパーを使用すれば、すべて正常に動作します。次の点を確認してください:twiddle URLが更新され、モデルフックが実行されます。それを覚えてください。 action正常な関数の呼び出しと呼び出しのように見えても、ヘルパーは正しいthisコンテキストに設定することが重要です。

関連する問題