0

テンプレートの 1 つで {{render}} ハンドルバー ヘルパーを使用して、同じページの別のルートのテンプレートをレンダリング (しようと) しています。たとえば、次のようになります。

<script type="text/x-handlebars" data-template-name="index">

{{#each model}}
  {{name}}<br />
{{/each}}

{{render "people"}}

</script>

<script type="text/x-handlebars" data-template-name="people">

{{#each controller}}
  {{name}}<br />
{{/each}}

</script>

People コントローラーで、通常どおりモデルを設定します。

App.PeopleRoute = Ember.Route.extend({
  model: function() {
    return App.People.find();
  }
});

people ルート (/people) に直接アクセスすると、人のリストが表示されます。people テンプレートが別のテンプレートにレンダリングされている私のメイン テンプレートでは、レンダー ヘルパーは PeopleRoute を呼び出さないため、モデルが設定されることはありません (私が理解している限り)。

PeopleController の content プロパティを people オブジェクトのリストに設定する方法はありますか?

これのバリエーションを機能させることができません:

App.PeopleController = Ember.ArrayController.extend({
  content: function() {
    return App.People.find();
  }
});
4

1 に答える 1

0

レンダー ヘルパーは遷移を行わないため、モデル フックは呼び出されません。同じ名前のコントローラーを使用して、現在のコンテキストでテンプレートをレンダリングするだけです。オプションのモデルをレンダー ヘルパーに渡すことができます。同じ名前のコントローラの内容... Ember API

  <script type="text/x-handlebars" data-template-name="index">

   {{#each model}}
    {{name}}<br />
   {{/each}}

    {{render "people" model}} 

   </script>

サンプルフィドルはこちら

于 2013-06-14T14:24:19.337 に答える