0

誰かがこれが機能する理由を説明できますか?

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' } );  
});
4

1 に答える 1

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/ )。

于 2013-02-06T07:14:42.317 に答える