0

次のモデルを備えた Ember アプリがあります。

  • 食べ物
  • 食事

(他にもモデルはありますが、簡潔にするために省略します)。

ルーターは次のように構成されます。

this.resource('food', { path: '/food/:food_id' });

this.resource('meals',function() {
  this.resource('meal', { path: '/:meal_id'}, function() {
    this.route('edit');
  });

  this.route('new');
});

Food テンプレートでは、印刷するために食事のリストにアクセスする必要があります。最初は、needs上のプロパティFoodControllerがうまくいくと思いました。

App.FoodController = Ember.ObjectController.extend({
    needs: ['meals', 'mealsIndex'],
    ...
});

私のテンプレートで私はそれから試しました

{{#each meal in controllers.meals.content}}
    TEST
{{/each}}

...しかし、何も表示されません。私は実際に他のいくつかの方法を試しましたが、何も効果がありません。

mealsおそらく、ルートが入力されるまで MealsController のモデルが設定されていないと思います。

私はここで完全に立ち往生しており、ドキュメントは役に立ちません。どんな支援も大歓迎です。

4

1 に答える 1

0

次のように、サーバーから手動でモデルをリクエストする必要があります。

App.FoodRoute = Ember.Route.extend({
    model:function(params){
        var store = this.store;
        return Ember.RSVP.hash({
            food:store.find('food',params.food_id),
            meals:store.find('meals')
        });
    },
    controllerSetup:function(controller,models) {
       controller.set('model',models.food);
       this.controllerFor('meals').set('model',models.meals);
    }
});

アプリが Food ルートに入ると、現在の食事とすべての食事の両方が要求されます。次に、食事コントローラーのモデルとすべての食事のモデルを食事コントローラーのモデルとして設定します。ニーズを使用して設定したように、テンプレートでそれらにアクセスできるはずです。

于 2014-04-25T17:04:24.477 に答える