Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 控制器中的模型挂钩和路由之间有什么区别?_Ember.js_Ember Data_Ember Cli - Fatal编程技术网

Ember.js 控制器中的模型挂钩和路由之间有什么区别?

Ember.js 控制器中的模型挂钩和路由之间有什么区别?,ember.js,ember-data,ember-cli,Ember.js,Ember Data,Ember Cli,我尝试了一个简单的应用程序,但我不知道什么时候在控制器中使用模型钩子,什么时候在路线中使用模型钩子。以此为例(使用EmberCLI): 模板(模板/discovery.hbs) 正如预期的那样,所有类型问题的记录都会传递并显示在discovery.hbs模板中 第二种方式(controllers/discovery.js) 因此,本应以与前一个相同的方式工作(至少我希望如此),但本不显示任何记录。那个么,若我在route或controller中定义模型,那个么有什么区别呢?应该首选什么?正如@b

我尝试了一个简单的应用程序,但我不知道什么时候在控制器中使用模型钩子,什么时候在路线中使用模型钩子。以此为例(使用EmberCLI):

模板(模板/discovery.hbs)

正如预期的那样,所有类型问题的记录都会传递并显示在discovery.hbs模板中

第二种方式(controllers/discovery.js)


因此,本应以与前一个相同的方式工作(至少我希望如此),但本不显示任何记录。那个么,若我在route或controller中定义模型,那个么有什么区别呢?应该首选什么?

正如@blessenm所说的,
模型
挂钩仅用于路线。这是Route对象的主要职责之一:它检索并设置要在该路由中显示的数据


控制器的
model
属性并不意味着作为挂钩:它是一个属性。它不是只读的原因是路由应该设置和修改它。

模型挂钩仅用于路由。从该方法返回的内容将成为控制器“model”属性的值。AFAIK模型是控制器上的属性,而不是可以覆盖的钩子。啊,所以我猜如果尝试这样做,ember应该抛出一些错误,Like:controller上的model属性无法覆盖?代码中
model
的定义是
model:computed.alias('content')
。而且它应该保持可重写,因为这是您在路由中的
setupController
中有时要做的事情。
{{#each model}}
    <tr>
        <td>
            Q: {{ques}}
        </td>
    </tr>
    {{/each}}
import Ember from "ember";

export default Ember.Route.extend({
    model : function(){
        return this.store.all('questions') ; 
    }
});
import Ember from "ember";

export default Ember.ArrayController.extend({
    model : function(){
        return this.store.all('questions') ; 

    }
});