如何在一个EmberJS页面上显示两个模型?

Dog*_*her 5 ember.js

在一个"页面"上显示两种不同类型的两种不同模型的实例的基本设置是什么?

例如,我有两个模型,比如学院和学生.每个都存储在REST服务器中.在某个路线上,我想拉出每个的特定实例并显示每个的"名称"属性.

来自Rails世界,我不太了解EmberJS的模型 - 视图 - 控制器概念.似乎在EmberJS中,每个控制器只能处理一种模型类型.那么这是否意味着必须为每种类型显示一个单独的控制器?

int*_*xel 4

在 ember 中,如果您严格遵循命名约定,那么您的假设是正确的,最佳实践是每个模型每个视图都有一个控制器,但在大多数情况下,需求不同,您也可以偏离约定,并满足您的需求你可以从概念上做这样的事情:

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..."
  }
];
Run Code Online (Sandbox Code Playgroud)

模板

<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>
Run Code Online (Sandbox Code Playgroud)

这里有一个工作jsbin展示了这个概念。

希望能帮助到你