代码,这是 jsfiddle for the code 。但是,我不喜欢我用来让 {[render}} 工作的方法。现在,为了能够在application-template中使用 {{render events}} ,我需要使用setupController在application-route中设置它,然后调用 controllerFor('events')< / em>,否则无效。但我已经定义了一个带有模型钩子的EventsRoute来设置控制器内容,并且希望 {{render helper}} 使用EventsRoute中的模型集。
我想知道除了目前进入ApplicationRoute 的方法之外,是否有更好或更惯用的方式在ember中执行此操作。
相关代码 *
App.Router.map(function(){
this.resource('events');
});
应用程序模板中的{{render'events'}}仅在我通过应用程序路径设置模型时才有效。
App.ApplicationRoute = Ember.Route.extend({
setupController: function(){
this.controllerFor('events').set('model', App.Event.find());
}
});
我更希望{{render'events'}}使用此处设置的内容,但事实并非如此。但我现在要保留在使用{{#linkTo}}可能有意义的地方使用。
App.EventsRoute = Ember.Route.extend({
model: function(){
return App.Event.find();
},
setupController: function(controller, model){
controller.set('content', model);
}
});
模板
<script type="text/x-handlebars" data-template-name="application">
{{render 'events'}}
{{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="events">
<button {{action 'yEmpty'}}> log event content is empty</button>
{{#each controller}}
<h3>{{title}}</h3>
<p>{{start}} - {{end}}</p>
{{/each}}
{{outlet}}
</script>
答案 0 :(得分:0)
我不确定你要做什么。您是否希望在一个页面上同时呈现events
和appointments
?如果是,那么,我想,你需要使用render
(就像你在jsfiddle中那样)。如果没有,您可以删除{{render 'events'}}
上的setupController
和ApplicationRoute
段,并重定向到events
路由。
我发现此issue与Fixture Adapter
一起,看起来它不适用于hasMany
(因此jsfiddle示例不起作用)但我假设您正在使用{{1} }。
更新:
设置模型的另一个地方是RESTAdapter
挂钩,如此:
init
就个人而言,我会将代码留在App.EventsController = Ember.ArrayController.extend({
init: function () {
this.set('model', App.Event.find());
}
});
挂钩。