我想构建一个使用属性“名称”来查找用户记录的 ember 路由。
问题是 restful 后端的 show 动作,它没有配置为使用“name”作为查找器。
所以我想使用“名称”查询后端索引操作并实例化集合中返回的第一条记录。
在我看来,这应该可以使用 ember-data。
这是灰烬路线:
edit: Em.Route.extend
route: '/:name/edit'
deserialize: (router, params) ->
user = router.get('store').findQuery( App.User, { name: params.name } )
#return user[0]
#return user.get('content')[0]
return user
serialize: (router, user) ->
name: user.get('name')
connectOutlets: (router, user) ->
router.get('applicationController').connectOutlet('user', user)
有人有想法么?
使用 DAN 建议的解决方案
loading: Em.State.extend()
edit: Em.Route.extend
route: '/:name/edit'
deserialize: (router, params) ->
user = router.get('store').findQuery( App.User, { name: params.name } )
deferred = $.Deferred()
user.addObserver "isLoaded", -> deferred.resolve( user.materializedObjectAt(0) )
return deferred.promise()
serialize: (router, user) ->
name: user.get('name')
connectOutlets: (router, user) ->
router.get('applicationController').connectOutlet('user', user)