我已经工作了大约一个月的安博,但我仍然感到困惑的各种钩在安博。我对每件事都了如指掌,但不能把它们缝在一起。我了解模型、beforeModel和afterModel钩子的用法。setupController钩子用于什么以及在生命周期中何时调用它。还有renderTemplate钩子是用来做什么的。我一直在使用它来执行每次呈现模板时都应该执行的功能,但是在在线阅读之后,我发现当一个人想在一个插座中呈现另一个模板时,就会使用它,比如:
renderTemplate: function() {
this.render('favoritePost');
} 如果我在路由中同时定义了模型钩子和renderTemplate钩子,那么我就会开始得到错误,在那之后什么也不能用。每次加载模板时,我在哪里可以做应该做的事情?我知道我可以使用didInsertElement钩子对视图进行类似的操作,但我不能在不创建视图的情况下这样做吗?
发布于 2014-03-19 11:09:50
最好的办法就是阅读余烬指南中的路由部分。
setupController钩子按照它的名称来做--它使用模型数据设置相关的控制器(如果需要的话)。模型数据可以来自模型钩子(给定一个手动url),也可以来自一个链接--到帮助器/transitionToRoute调用--所以每次您以任何一种方式进入这个路由时都会调用它。默认情况下,它会将模型作为“模型”属性附加到隐含控制器。
通常,只有当您希望呈现不是此路由的命名约定设置的模板/视图,或者挂起与约定所暗示的控制器不同的控制器时,才会使用renderTemplate钩子。它还可以用于在特定模板中呈现到特定的出口。默认情况下,它将使用隐含控制器作为上下文呈现隐含视图/模板。
关于您的问题,您应该在哪里定位您的代码--显然这与视图层有关--您肯定应该将它放在视图中,而不是在路由器中。如果您坚持将其放入路由器--确保在重写这些钩子时调用this._super()。
发布于 2014-08-05 20:11:41
我在我的一个应用程序中使用renderTemplate,我们使用的语法是:
this.render({
into: 'viewName',
outlet: 'outletName'
});我用了你在这条路线上说的两个钩子,没有任何问题。
https://stackoverflow.com/questions/22498704
复制相似问题