2013-02-05 46 views
0

有人可以解釋爲什麼這工作:Emberjs申請途徑和控制器

守則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

路由 – paulruescher

回答

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。更重要的是,你應該訪問控制器在食品行業的食品路線... FoodRoute。閱讀關於Ember的更多信息以及它的路由方式(http://emberjs.com/guides/)。