通过阅读文档,您似乎必须(或应该)将模型分配给路径,如下所示:
App.PostRoute = Ember.Route.extend({
model: function() {
return App.Post.find();
}
});
Run Code Online (Sandbox Code Playgroud)
如果我需要在某个路线中使用多个物体怎么办?即帖子,评论和用户?如何告诉路由加载这些?
我有两个很多很多的模型.他们在我的应用程序的第一页上使用,我在加载它们时遇到问题.
两个型号只有少量项目(<200),我想在每个findAll请求中完全加载两个模型.但是当第一个模型被加载时,Ember开始逐项获取第二个模型的缺失数据.如果我尝试单独加载模型,我会收到错误并且必须设置{async:true}为hasManyattr.出于某种原因,Ember没有认识到第二个模型的请求的json.
无论如何都要获取两个模型并等到两个负载再继续之前?
谢谢.
我正在按照Ember 2.3的文档进行操作,似乎找不到任何基本的东西:如何访问主模板中路由模型钩子提供的值:application.hbs?
路线/ client.js
// ...
export default Ember.Route.extend({
model() {
return {
navigation: [
{
title: "Projects",
link: "projects"
},
{
title: "My Specifications",
link: "specs"
}
]
}
}
});
Run Code Online (Sandbox Code Playgroud)
模板/ application.hbs
<nav>
{{#each navigation as |navItem|}}
<li>{{#link-to navItem.link}} {{navItem.title}} {{/link-to}}</li>
{{/each}}
</nav>
{{outlet}}
Run Code Online (Sandbox Code Playgroud)
就像现在一样,导航对象可以被路径的模板(client.hbs)访问,但不能访问应用程序模板.
我在我的model钩子里使用RSVP.hash .但是我需要我的路线来加载基于url(包含动态段)的动态数据.即this.route('foo', {path: ':id'}).
所以我决定将一些东西移出afterModel钩子.
但是,我需要执行商店params(用于分页):
model(params) {
this.set('params', params);
return this.store.findRecord('foo', params.foo_id);
},
afterModel: function(model) {
console.log(this.get('params')); // logs the right params
let params = this.get('params');
// This store query needs access to params
this.store.query('bar', { filter: { 'foo-id': model.get('id') }, page: { number: (params.page ? params.page : 1) } }).then(bars => {
this.controller.set('bars', bars);
});
}
setupController(controller, model) {
this._super(controller, model);
this.set('bars', bars);
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我有这个,它有效:
model(params) {
this.set('params', params);
... …Run Code Online (Sandbox Code Playgroud)