在基于Ember的项目中,我有一个book对象,其中包含一系列章节,每个章节都是一个部分数组。
我也有一个如下所示的嵌套路线:
this.resource('book', { path: 'book/:id' }, function() {
this.resource('section', { path: 'chapter/:chapter_num/section/:section_num'});
});
在我的车把模板中,我的菜单看起来像这样:
<ul>
<li>{{#link-to 'book' this}}Home{{/link-to}}</li>
{{#each chapter in chapters}}
<li>{{title}}</li>
<ul>
{{#each section in sections}}
<#link-to ???WHAT TO PUT HERE???>{{section}}</link-to>
{{/each}}
</ul>
{{else}}
<li>No chapters</li>
{{/each}}
</ul>
我正在努力想出一个正确的方法来生成到给定部分的路由,其中输出将产生以下效果:
e.g:
book / 1234567 / chapter / 3 / section / 4 for chapter 3,section 4
第1章第2节book / 1234567 / chapter / 1 / section / 2
一,我不知道如何访问当前章节的索引和我要创建链接的部分,以及两个,我不知道如何为给定部分创建嵌套路由。
我对Ember还很陌生,所以这里的任何提示都会非常有用。
答案 0 :(得分:1)
我建议改变你的路线:
this.resource('book', { path: 'book/:id' }, function() {
this.resource('chapter', { path: 'chapter/:chapter_num'}, function(){
this.resource('section', { path: 'section/:section_num' });
});
});
然后您可以通过执行以下操作添加路线:
{{#link-to 'book.chapter.section' book chapter section}} {{section}} {{/link-to}}
至少,我认为这应该有效。您可能需要将num
更改为id
。
答案 1 :(得分:1)
您应该使用Ember.Route的序列化和模型方法来处理网址,并将该部分发送到链接。
使用
{{#link-to 'book.section' book section}}
并在路线中做这样的事情:
App.SectionRoute = Ember.Route.extend({
model: function(params) {
var book = this.modelFor('book');
return book.getChapter(params.chapter_num).getSection(params.section_num);
},
serialize: function(section) {
return {
chapter_num: section.get("chapter.id"),
section_num: section.get("id")
};
}
});
希望有所帮助。