我有一个仪表板,其中显示了可以从下拉列表中选择的事业/慈善机构的一些统计数据。当用户从下拉列表中更改新的事业/慈善机构时,我想转换路由器,以便事业/慈善机构的名称包含在 URL 中,例如 /#dashboard/British Heart Foundation。
这是我的尝试,控制器观察当前选择的原因/慈善机构,如果它发生变化则进行转换。问题是在加载导致无限循环的路线后设置当前原因/慈善机构时触发转换。现在我知道我可以检查原因的先前值并确保它在触发转换之前不为空,但我的方法感觉有点不对劲。将控件绑定到路由器参数的惯用方式是什么?
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>