5

2 つの異なるタイプの 2 つの異なるモデルのインスタンスを 1 つの「ページ」に表示するための基本的な設定は何ですか?

たとえば、College と Student という 2 つのモデルがあります。それぞれが REST サーバーに格納されます。特定のルートで、それぞれの特定のインスタンスを取得し、それぞれの「名前」属性を表示したいと考えています。

Rails の世界から来た私は、EmberJS の Model-View-Controller の概念をよく理解していません。EmberJS では、各コントローラーが 1 つのモデル タイプしか処理できないようです。これは、表示するタイプごとに個別のコントローラーを使用する必要があるということですか?

4

2 に答える 2

4

残りの場合、命名規則に厳密に従う場合、ベストプラクティスはビューごとにモデルごとにコントローラーを持つことであるという仮定は正しいですが、要件が異なるほとんどの場合、規則から逸脱してニーズを満たすこともできます概念的には次のようなことができます。

JavaScript

var App = Ember.Application.create();

App.IndexRoute = Ember.Route.extend({
  model: function(){
    return Ember.Object.create({post: App.Post.find(1), page: App.Page.find(1)});
  }
});

App.Store = DS.Store.extend({
 revision: 12,
 adapter: 'DS.FixtureAdapter'
});

App.Post = DS.Model.extend({
 title: DS.attr('string'),
 description: DS.attr('string')
});

App.Page = DS.Model.extend({
 title: DS.attr('string'),
 text: DS.attr('string')
});

App.Post.FIXTURES = [
  {
    id: 1,
    title: "My super post",
    description: "Lorem ipsum dolor sit amet..."
  }
];

App.Page.FIXTURES = [
  {
    id: 1,
    title: "My super page",
    text: "Lorem ipsum dolor sit amet..."
  }
];

テンプレート

<script type="text/x-handlebars">
  {{outlet}}
</script>

<script type="text/x-handlebars" data-template-name="index">
  <h2>{{model.post.title}}</h2>
  <p>{{model.post.description}}</p>
  <hr/>
  <h2>{{model.page.title}}</h2>
  <p>{{model.post.description}}</p>
</script>

そして、ここに概念を示す動作中のjsbinがあります。

それが役に立てば幸い

于 2013-05-21T00:53:28.783 に答える