我一直试图调试一段时间,我可能已经弄明白问题是什么,让我通过使用fiddle来解释发生的事情
导航至http://fiddle.jshell.net/ivanvanderbyl/mfqEB/show/#/projects/1,您会发现网址中的动态细分已替换为null
- 它应保持为1
根据我可以收集的信息,路由一次后,Ember Router会调用更新URL,用相应实例化对象获取的值替换动态段,在本例中为App.Project。
问题是此时未加载App.Project
因此id
为null
现在,无论是我的错误还是实施失败,还有其他人看过这个吗?
答案 0 :(得分:1)
将projects.index中的connectOutlets直接移动到项目中似乎可以解决问题。不要问我原因。
Router: Ember.Router.extend(
location: 'hash'
enableLogging: true
root: Ember.Route.extend(
listProjects: Ember.Route.transitionTo("projects.index")
showProject: Ember.Route.transitionTo("projects.show")
index: Ember.Route.extend(
route: "/"
redirectsTo: 'projects.index'
)
projects: Ember.Route.extend(
route: '/projects'
connectOutlets: ((router) ->
router.get('applicationController').connectOutlet('projects', App.Project.find())
)
index: Ember.Route.extend(
route: '/'
)
add: Ember.Route.extend(
route: '/new'
)
show: Ember.Route.extend(
route: '/:project_id'
connectOutlets: (router, project) ->
console.log project.get('name')
# router.get('applicationController').connectOutlet('project', project)
)
)
)
)
答案 1 :(得分:0)
因此经过大量调查后,对此的正确解决方案是不在模型上指定主键属性,在这种情况下,我不应该在Project模型上指定ID属性。 Ember Data在内部处理此问题。
感谢Peter Wagenet在Github上指出这一点。