灰烬不会覆盖模型钩子

时间:2013-09-16 22:24:07

标签: ember.js ember-data

根据文件:

  

如果您正在使用Ember数据,则只需覆盖模型挂钩   如果你需要返回一个与记录不同的模型   提供ID

但这对我不起作用,ember数据给我错误的数据。

App.UsersEditRoute = Ember.Route.extend
    model: (params) ->
            return ['Just', 'Some', 'Random']
    setupController: (controller, model) ->
            controller.set('model', model) # Returns @get('store').find 'user', params.user_id

这应该返回[' Just',' Some',Random],但它会给我原始的@get(' store')。 #39; user',params.user_id

为什么以及如何获取我想要的数据? 顺便说一句,如果我喜欢下面的内容,一切正常,但我想知道为什么我的模型函数永远不会被调用。

setupController: (controller, model) ->
    controller.set('model', ['Just', 'Some', 'Random']) # returns ['Just', 'Some', 'Random']

谢谢,我使用的是ember-data 0.14和ember 1.0.0

2 个答案:

答案 0 :(得分:0)

对于具有动态段的路径,模型挂钩仅在页面被(重新)加载时被调用,这是ember guide所说的内容(最后的注释):

  

注意:具有动态段的路径只有在通过URL输入时才会调用其模型钩子。如果通过转换输入路线(例如,当使用链接到Handlebars帮助器时),则已经提供了模型上下文并且不执行钩子。没有动态段的路由将始终执行模型挂钩。

答案 1 :(得分:0)

当我想覆盖模型钩子时,我遇到了类似的问题。西蒙的回答给了我正确的方向。此外,还应该注意,Links部分中的“{{3}}部分”中的{{link-to}}帮助程序需要执行以下内容:

  

每个动态细分最多一个模型。默认情况下,Ember.js会   用相应对象的id值替换每个段   属性。如果没有模型传递给帮助程序,则可以提供   而是显式标识符值。该值将被填入   路线的动态部分,并将确保模型   挂钩被触发。

所以最重要的是通过用对象id(在我的'product.id'中)替换{{link-to}}助手(在我的情况下'product')中的模型,我的模型钩子是现在每次都打电话。