目前我有一个名为“表单A”的表单,我为此表单创建了许多视图,包括编辑,创建和列表。我希望能够创建一个名为“表单B”的表单,它将“表单A的ID”作为父ID。使我能够在“表格A”下拥有所有表格B的列表(必不可少的一对多关系)。所以,在我的“表格A”列表中,我为每个项目都有这个链接:
{{#link-to 'form-a.form-b.listing' form-a.id}} <!--Link to a controller -->
<span class="btn btn-primary"> form b </span>
{{/link-to}}
这也是我的路由器
this.route('form-a', function() {
this.route('new');
this.route('listing');
this.route('edit', {path: '/edit/:form-a_id' });
this.route('form-b', function() {
this.route('listing', {path: '/listing/:form-a_id'});
this.route('new');
});
});
所以我试图通过形式的Id来获取列表。但是我有点卡在这里因为我不确定下一步该怎么做以及如何正确地通过列表控制器中的“形成”ID并将其用作每个“表单B”的父ID。有没有更好的方法来嵌套表单与一个太多的关系,或者我是以最好的方式去做它?
我希望有人可以帮我解决这个问题。如果您需要任何澄清,请问我知道我在描述我的问题时通常很糟糕。
答案 0 :(得分:1)
此帖子适用于Ember 2.x.x,编号为2.15。
我认为对你有很大帮助的是 this.route('form-as', function() {
this.route('form-a', {path: '/:form-a_id'}, function() {
this.route('new');
this.route('listing');
this.route('edit');
this.route('form-b', function() {
this.route('listing', {path: '/listing'});
this.route('new');
});
});
});
。
很难说&#34;对&#34;路由结构,因为您的用户界面会稍微说明一些事情,而且我不确定确切的网址有多重要。
这里是我如何设置路线,假设时间会有多种形式。
params
在上面的代码中,表单a下的新建,列表和编辑将通过路径的模型钩子中的model(params) {
console.log(params['form-a_id'])
// using the [] accessor since dashes don't work for normal dictionary nav
}
访问表单id:
model() {
console.log(this.paramsFor('form-as.form-a'))
}
在表单b段中,listing和new可以访问表单 - 这样的参数:
paramsFor()
注意那些标记为虚线的ID和模型名称。它们可能是错误的来源,我并非100%确定我在这里得到它们。我避开它们。
有关my commit = 123423423423423423423423
person A's commit = asdfasdfadsfasdfasdfasdf
person B's commit = 23423423423423423423443
的详情,请参阅指南中的Reusing Route Context和Dynamic Segments