有人可以解释为什么会有效:
App.js中的代码:
App.ApplicationRoute = Ember.Route.extend({
setupController : function (params) {
this.controllerFor('food').set('model', App.Food.find(params.food_id));
}
});
但除非我明确声明App.FoodController = Ember.ObjectController.extend();
App.FoodRoute = Ember.Route.extend({
model : function(params) {
return App.Food.find(params.food_id);
}
});
这是我在index.html中使用的代码,并且不会在代码块之间发生变化
<script type="text/x-handlebars" data-template-name="application">
{{ outlet }}
</script>
<script type="text/x-handlebars" data-template-name="food">
{{name}}
</script>
路由器:
App.Router.map(function() {
this.resource( 'foods' );
this.resource( 'food', { path : '/food/:food_id' } );
});
答案 0 :(得分:0)
您显示的代码似乎没问题。这是一个证明它的工作小提琴: http://jsfiddle.net/ebXeS/2/
代码唯一不对的是这部分(从小提琴中排除):
App.ApplicationRoute = Ember.Route.extend({
setupController : function (params) {
this.controllerFor('food').set('model', App.Food.find(params.food_id));
}
});
根据您的路由器定义,您的应用程序路由参数中不应该有food_id。更重要的是,你应该访问uhm食物路线的控制器... FoodRoute。阅读更多关于Ember及其路由的方式(http://emberjs.com/guides/)。