我的路线中有这样的事情:
actions: {
save(title, description) {
const newCard = this.get('store').createRecord('card', { title, description } );
newCard.save().then((card) => {
// card.id contains the id of the new card
this.transitionTo('cards.all'); // problem with this line
});
}
}
创建后我想转到新的卡片路线。我可以从id
获取新项目的card.id
。我尝试过以下但没有用:
this.transitionTo('cards.card', card.id);
这引发了一些错误,因为cards.card
路线无法在参数中找到id
。
以下内容:
this.transitionTo('cards/' + card.id);
抛出一些错误,指出找不到cards/45
路由,但是如果新项目已创建,我可以导航到它。
我使用的是Ember 2.6.1。
修改
我的router.js
文件:
this.route('cards', function() {
this.route('all');
this.route('card', {path: '/:card_id'}, function() {
this.route('edit');
});
this.route('new');
});
答案 0 :(得分:1)
这是您的路由器目前的样子吗?
this.route('cards', function() {
this.route('all');
this.route('card', {path: '/:card_id'}, function() {
this.route('edit');
});
this.route('new');
});
如果您想要转到特定卡的新路线,那么您需要为新定义一个slug。像
这样的东西this.route('new', {path: /:card_id});
动作哈希的转换如下:
this.transitionTo('new', card.id);
希望我能正确理解您的用例。
答案 1 :(得分:0)
应该是这样的:
this.transitionTo('cards.card', card);
我只需要这样做,因为我的card.js
期待params对象并且我试图传递一个数字:
model(params) {
return this.store.find('card', params.id);
}