Javascript Ember.js 2,在一级路线中使用多个动态段过渡
我使用的是Ember>=2.13.x 我需要使用路线动作中的Javascript Ember.js 2,在一级路线中使用多个动态段过渡,javascript,ember.js,ember-data,transition,ember-cli,Javascript,Ember.js,Ember Data,Transition,Ember Cli,我使用的是Ember>=2.13.x 我需要使用路线动作中的转换到,以进入另一条路线 以下是演示余烬旋转: 我有这样的情况: router.json: routes/application.js: routes/post.js: 模板/application.hbs: GoToPost与动作(转换到) 因此,当我单击时,一切都按预期进行 我在应用程序操作中获取模型,然后使用this.transitiono('post',post) 在我的post路径中,我有serialize(),我现在读到,
转换到
,以进入另一条路线
以下是演示余烬旋转:
我有这样的情况:
router.json:
routes/application.js:
routes/post.js:
模板/application.hbs:
GoToPost与动作(转换到)
因此,当我单击时,一切都按预期进行
我在应用程序操作中获取模型,然后使用this.transitiono('post',post)代码>
在我的post
路径中,我有serialize()
,我现在读到,当存在动态段时,它用于URL合成
我的问题:我用得对吗?
为什么我不能这样使用:this.transitiono('post',post.category.id,post.id)编码>并让model()
在post
路由中获取模型(从数据库或存储)
我还尝试使用this.transitiono('post',{category\u id:post.category.id,post\u id:post.id})
但是显然,post
路由model()
没有加载任何内容,因为它确实认为对象已经存在
因此,我只能用serialize()
方法解决这个问题这是正确的方法吗?您不需要重写序列化钩子,默认情况下,您将在路由模型钩子参数中获得动态段和查询参数
model({post_id,category_id}) {
return this.store.findRecord('post', post_id);
}
这是你的电话号码
我更喜欢添加相应的前缀,比如post
,这样URL就很容易区分了
如果希望transitionTo
调用模型钩子,则在参数中提供对象或模型始终提供所需的参数可能是字符串或数字。
请参阅:您不需要重写序列化钩子,默认情况下,您将在路由模型钩子参数中获得动态段和查询参数
model({post_id,category_id}) {
return this.store.findRecord('post', post_id);
}
这是你的电话号码
我更喜欢添加相应的前缀,比如post
,这样URL就很容易区分了
如果希望transitionTo
调用模型钩子,则在参数中提供对象或模型始终提供所需的参数可能是字符串或数字。
参考:你的分类路线中有什么?重要吗?你的分类路线中有什么?重要吗?在你的游戏中,你正在使用这个。过渡到('post',1,2)
。我改为使用this.transitiono('post',post.get('category.id'),post.id)
。我不知道为什么,但昨天在我的项目中,它不起作用。非常感谢。在你的游戏中,你正在使用这个。转换到('post',1,2)
。我改为使用this.transitiono('post',post.get('category.id'),post.id)
。我不知道为什么,但昨天在我的项目中,它不起作用。谢谢。
model(params) {
return this.store.findRecord('post', params.id);
},
serialize(model) {
console.log('model in serialize():', model);
return { category_id: model.get('category.id'), post_id: model.id };
}
<button type="button" {{action 'goToPost'}}>GoToPost with action (transitionTo)</button>
model({post_id,category_id}) {
return this.store.findRecord('post', post_id);
}
this.route('category', {path: 'category/:category_id'});
this.route('post', {path: 'post/:category_id/:post_id'});