为什么我的model.reload()在afterModel中重定向到相关模型?

时间:2014-12-26 18:55:06

标签: ember.js ember-data

出于某种原因,在model.reload()中调用afterModel会重定向到相关模型的路线,而我似乎无法找出原因。

SkillRoute = Ember.Route.extend
  model: (params) ->
    @store.find('skill', {slug: params.slug}).then (model) =>
      model.get('firstObject')
  afterModel: (model) ->
    model.reload() # offending line

firstObject只是使用Ember.Enumerable来检索一个项目数组中的第一个技能。在这里调用.toString() - 并在afterModel中 - 会显示这是一个: model:skill::ember659:1

由于某种原因,这会转换为RecipeRoute,其中RecipeSkill的父级,例如

Recipe = DS.Model.extend
  skills: DS.hasMany('skill', {async: true})

此重定向不是预期的。相反,我打算重新请求数据,因为Recipe包含Skill的部分序列化版本,以减少数据库查找,响应大小等。

1 个答案:

答案 0 :(得分:1)

事实证明这与我所做的改变无关。应该从link-to 'skill'转换为RecipesRoute的{​​{1}}包含在处理SkillRoute事件的Ember.View中。

虽然这个click事件在click没有model.reload()的情况下奇怪地没有发生(这仍然让我感到困惑),但我最终通过向afterModel添加bubbles=false来阻止它{1}}。