绑定html选择路由器参数

时间:2013-04-09 15:22:11

标签: ember.js

我有一个仪表板,显示可以从下拉列表中选择的原因/慈善机构的一些统计数据。当用户从下拉列表中更改新的原因/慈善机构时,我想转换路由器,以便原因/慈善机构的名称包含在URL中,例如/#dashboard /英国心脏基金会。

在我的尝试中,控制器观察当前选择的原因/慈善机构,如果它发生变化则转换。问题是在加载导致无限循环的路由后设置当前原因/慈善时触发转换。现在我知道我可以检查原因的先前值并确保它在触发转换之前不为空,但我的方法感觉有点偏。将控制绑定到路由器参数的惯用方法是什么?

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>

0 个答案:

没有答案