Ember:转换到路由传递ID而不是obj

Gua*_*ard 2 javascript ember.js

我有一些像/ ads /:ad_id的路线,我可以从我的控制器那里做

this.transitionToRoute('ads.ad', adObj)
Run Code Online (Sandbox Code Playgroud)

我怎么能做类似的事情,但这次传递ID而不是加载的对象?

我当然知道我可以先用ID加载一个obj,但是Ember的力量正在为我们丢失样板.

更新:因此,默认情况下,Ember将模型序列化为URL params

mode_instance -> { model_name_id: model_instance.id }
Run Code Online (Sandbox Code Playgroud)

我的琐碎尝试正在做

this.transitionToRoute('ads.ad', { id: adObjId })
Run Code Online (Sandbox Code Playgroud)

但是当传递模型对象时,Ember不会重新获取它.

所以,问题是:我有一条依赖于广告ID的路线(单一广告视图).我有这个ID作为号码.我想过渡到这条路线,就像我只是输入网址一样/ads/ID

小智 8

这可以通过将URL传递给transitionTo来实现.例如,

this.transitionToRoute('/ads/' + adObjId)
Run Code Online (Sandbox Code Playgroud)

将使用URL中的params调用model()方法.


小智 7

这是一个用例:

从列表视图转换到详细视图.在列表视图中,记录没有任何关系,但详细视图应该侧载关系数据.因此,列表视图和详细视图之间的模型不是1:1.应该有一种简单地使用id转换的方法.

CP