【发布时间】:2013-05-27 01:21:04
【问题描述】:
代码有效,这里是 jsfiddle for the code。但是,我不喜欢我用来让 {[render}} 工作的方法。现在为了能够在应用程序模板中使用 {{render events}},我需要使用 setupController 在应用程序路由中设置它,然后调用 controllerFor('events'),否则将无法正常工作。但是我已经定义了一个带有模型钩子的 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>
【问题讨论】:
标签: ember.js handlebars.js ember-router