根据文件:
如果您正在使用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
答案 0 :(得分:0)
对于具有动态段的路径,模型挂钩仅在页面被(重新)加载时被调用,这是ember guide所说的内容(最后的注释):
注意:具有动态段的路径只有在通过URL输入时才会调用其模型钩子。如果通过转换输入路线(例如,当使用链接到Handlebars帮助器时),则已经提供了模型上下文并且不执行钩子。没有动态段的路由将始终执行模型挂钩。
答案 1 :(得分:0)
当我想覆盖模型钩子时,我遇到了类似的问题。西蒙的回答给了我正确的方向。此外,还应该注意,Links部分中的“{{3}}部分”中的{{link-to}}帮助程序需要执行以下内容:
每个动态细分最多一个模型。默认情况下,Ember.js会 用相应对象的id值替换每个段 属性。如果没有模型传递给帮助程序,则可以提供 而是显式标识符值。该值将被填入 路线的动态部分,并将确保模型 挂钩被触发。
所以最重要的是通过用对象id(在我的'product.id'中)替换{{link-to}}助手(在我的情况下'product')中的模型,我的模型钩子是现在每次都打电话。