【问题标题】:Ember don't override the model hookEmber 不会覆盖模型钩子
【发布时间】:2013-09-16 22:24:07
【问题描述】:

根据文档:

如果您使用的是 Ember Data,则只需覆盖模型挂钩 如果您需要返回与记录不同的模型 提供身份证

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

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').find '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

【问题讨论】:

    标签: ember.js ember-data


    【解决方案1】:

    模型钩子,对于具有动态段的路由,仅在(重新)加载页面时调用,这是ember guide 所说的(末尾的注释):

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

    【讨论】:

      【解决方案2】:

      当我想覆盖模型挂钩时,我遇到了类似的问题。西蒙的回答给了我正确的方向。此外,还应注意,同样来自 ember 指南,但在 Links 部分中,{{link-to}} 帮助器采用:

      每个动态细分最多有一个模型。默认情况下,Ember.js 将 将每个段替换为相应对象的 id 的值 财产。如果没有模型可以传递给助手,您可以提供 一个明确的标识符值。该值将被填入 路线的动态段,并将确保模型 钩子被触发。

      所以底线是通过将 {{link-to}} 帮助程序(在我的情况下为“产品”)中的模型替换为对象 id(在我的情况下为“product.id”),我的模型挂钩是现在每次都调用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-21
        • 1970-01-01
        相关资源
        最近更新 更多