关于模型(http://emberjs.com/guides/templates/rendering-with-helpers/),我不明白Ember {{render}}
的解释。什么是“相应控制器的单例实例”?
When no model is provided it gets the singleton instance of the corresponding controller
When a model is provided it gets a unique instance of the corresponding controller
我正在尝试在页面上嵌入视图。我有一个Post页面,我想在Post页面中嵌入Comments / New,以便我可以在Post页面上发表评论。
我可以去评论/新评论并添加新评论。但是当我尝试使用{{render}}嵌入Post页面时,它有错误,因为它不包含CommentsNewRoute逻辑。
问题是我在CommentsNewRoute中有逻辑,但是当我使用{{render}}
时它会忽略Route逻辑。如何让{{render}}
只使用相应的Route逻辑?
CommentsNewRoute:
App.CommentsNewRoute = Ember.Route.extend({
model: function(){
return this.store.createRecord('comment');
},
actions: {
willTransition: function(transition) {
if (this.currentModel.get('isNew')) {
this.get('currentModel').deleteRecord();
};
}
}
});
CommentsNewController:
App.CommentsNewController = Ember.ObjectController.extend({
actions: {
save: function() {
// do save new comment stuff
}
}
});
发布/索引.hbs模板:
<h1 class="page-header">Post {{id}}</h1>
{{render "comments/new"}} <<<<<< I want to embed the whole Comments/New page here, including the logic from CommentsNewRoute
路由器:
this.resource('post', { path: '/posts/:id' }, function() {
this.route('edit');
});
this.resource('comments', { path: '/comments' }, function() {
this.route('new');
});
版本:
DEBUG: ------------------------------- ember.js
DEBUG: Ember : 1.6.0-beta.5 ember.js
DEBUG: Ember Data : 1.0.0-beta.8.2a68c63a ember.js
DEBUG: Handlebars : 1.3.0 ember.js
DEBUG: jQuery : 1.11.1 ember.js
DEBUG: -------------------------------
答案 0 :(得分:0)
是的,{{render}}
对路线一无所知,完全独立于路线。对于render使用的控制器,模型将要求它从其他地方获取它。如果你没有通过渲染助手传递模型,你可以通过执行类似
content: function() {
return ['blue', 'green', 'red'];
}.property()
或在控制器init
中设置。
通常,{{render}}
最适用于页面上的独立组件。想想一个独立于页面内容的通知小部件,但需要一个视图/模板/控制器,也许需要模型。由于您提到的原因,最好不要尝试将{{render}}
用于路由也使用的控制器,其中路由逻辑(例如model
和setupController
将会不可用。相反,将您的逻辑分解出来,使{{render}}
独立,然后从路径的模板中调用它。