【发布时间】:2014-02-26 16:44:39
【问题描述】:
我有一个 ember-data 模型,它有一个 id 以及一个服务器生成的自定义 slug 属性(如果重要的话,它的前缀是 id)。
我想在所有公共路由中使用slug 而不是id。为此,我更改了路由器:
App.Router.map ->
@resource 'strategies', path: '/strategies', ->
@resource 'strategy', path: ':strategy_slug'
并覆盖了相应路由的serialize方法:
App.StrategyRoute = Ember.Route.extend()
serialize: (model) ->
{
strategy_slug: model.get('slug')
}
不幸的是,当使用控制器中的 transitionToRoute 转换到例如 /strategies/123-test 时,这似乎不起作用:
App.ExampleController = Ember.ObjectController.extend()
[...]
actions:
showDetails: ->
@transitionToRoute("/strategies/#{@get('slug')}")
false
(其中@get('slug') 返回'123-test')
调用showDetails 操作后我在控制台中得到的所有输出是:
Transitioned into 'strategies.index'
Ember 似乎确实可以识别基于 slug 的路线。
Ember: 1.5.0-beta.2+pre.3ce8f9ac
Ember Data: 1.0.0-beta.6
有什么我可能错过的吗?
编辑:
以下变体在这种情况下有效并且可行,但我还有另一个用例,我只能访问 URL。
App.ExampleController = Ember.ObjectController.extend()
[...]
actions:
showDetails: ->
@transitionToRoute('strategy', @get('content'))
false
【问题讨论】:
标签: ember.js