出于某种原因,在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
,其中Recipe
是Skill
的父级,例如
Recipe = DS.Model.extend
skills: DS.hasMany('skill', {async: true})
此重定向不是预期的。相反,我打算重新请求数据,因为Recipe
包含Skill
的部分序列化版本,以减少数据库查找,响应大小等。
答案 0 :(得分:1)
事实证明这与我所做的改变无关。应该从link-to 'skill'
转换为RecipesRoute
的{{1}}包含在处理SkillRoute
事件的Ember.View
中。
虽然这个click
事件在click
没有model.reload()
的情况下奇怪地没有发生(这仍然让我感到困惑),但我最终通过向afterModel
添加bubbles=false
来阻止它{1}}。