0

ドロップダウンから選択できる原因/慈善団体の統計を表示するダッシュボードがあります。ユーザーがドロップダウンから新しい原因/慈善団体を変更すると、/#dashboard/British Heart Foundation などの URL に原因/慈善団体の名前が含まれるようにルーターを移行したいと考えています。

これが私の試みです。コントローラーは、現在選択されている原因/慈善団体を監視し、変更された場合は移行します。問題は、ルートをロードした後に現在の原因/慈善団体が設定されたときに遷移がトリガーされ、無限ループが発生することです。これで、遷移をトリガーする前に原因の前の値を確認し、null でないことを確認できることがわかりましたが、私のアプローチは少しずれているように感じます。コントロールをルーターパラメーターにバインドする慣用的な方法は何ですか?

App.Router.map(function(){
  this.resource('dashboard', { path: '/dashboard/:cause' });
});

App.DashboardRoute = Ember.Route.extend({
  model: function(params){
    return {
      cause: params.cause,
      causes: ['British Heart Foundation', 'Great Ormand Street Hospital']
    }
  }  
});

App.DashboardController = Ember.ObjectController.extend({
  changeCause : function(obj, keyName, value){
    this.get("target").transitionTo("dashboard", {cause: this.get("cause")});
  }.observes("cause")
});

<script type="text/x-handlebars" data-template-name="dashboard">
  {{ view Ember.Select contentBinding="controller.causes"  valueBinding="controller.cause" }}
  <h1>{{ controller.cause }}</h1>
</script>
4

0 に答える 0