我尝试了一个简单的应用程序,但我很困惑,因为何时在控制器中使用模型钩子以及何时在路径中使用模型钩子。以此为例(使用EmberCLI):
模板(templates / discovery.hbs)
{{#each model}}
<tr>
<td>
Q: {{ques}}
</td>
</tr>
{{/each}}
所以我可以用以下两种方式定义模型
** First Way(routes / discovery.js)**
import Ember from "ember";
export default Ember.Route.extend({
model : function(){
return this.store.all('questions') ;
}
});
这与预期一样,所有类型问题的记录都会传递并显示在discovery.hbs模板中。
第二种方式(controllers / discovery.js)
import Ember from "ember";
export default Ember.ArrayController.extend({
model : function(){
return this.store.all('questions') ;
}
});
所以预计这会像以前一样(至少我预期),但是这并没有显示任何记录。那么如果我在路线或控制器中定义模型有什么区别?什么应该是首选?
答案 0 :(得分:7)
正如@blessenm所说,model
钩子只适用于路线。这是Route对象的主要职责之一:它检索并设置要在该路径中显示的数据。
Controller的model
属性并不是一个钩子:它是一个属性。它不是只读的原因是Route应该设置和修改它。