如何重定向到EMberjs中的嵌套动态段

时间:2013-12-11 01:42:40

标签: redirect ember.js nested

如果我们有几本书,每本书都有几章,每章都有几页。

在应用中, 当用户导航到

“/家”

列出所有书籍,点击一本书(例如:book_1)将直接“linkTo”

“/ book_1 / chapter_1 / PAGE_1”

在所选图书中显示“chapter_1 / page_1”的内容。

我现在正在尝试使用“重定向”钩子,但我对这些感到困惑:

1,如何将muti params发送到重定向挂钩;

2,重定向后如何正确更新URL?

3,这样做的“Ember方式”是什么?

_ BOOK MODEL __

App.Book = DS.Model.extend({
name: DS.attr('string'),
chapters: DS.hasMany('chapter',{async:true}),
color: DS.attr('')
});

App.Chapter = DS.Model.extend({
name: DS.attr('string'),
author: DS.attr(''),
pages: DS.hasMany('page',{async:true})

});

App.Page = DS.Model.extend({
name: DS.attr('string'),
});
App.Book.FIXTURES = [
{
id: 1,
name: 'book1',
color: 'red',
chapters: [1,2]
},
{
id: 2,
name: 'book2',
color: 'blue',
chapters: [3,4]
}
];



App.Chapter.FIXTURES = [
{
id: 1,
name: 'Chapter1',
author: 'jhon',
pages:[1,2]
},
{
id: 2,
name: 'Chapter2',
author: 'jhon',
pages:[3,4]
},
{
id: 3,
name: 'Chapter3',
author: 'peter',
pages:[5,6]
},
{
id: 4,
name: 'Chapter4',
author: 'tom',
pages:[7,8]
}
];

App.Page.FIXTURES = [
{
id: 1,
name: 'page1',
},
{
id: 2,
name: 'page2',
},
{
id: 3,
name: 'page3',
},
{
id: 4,
name: 'page4',
},
{
id: 5,
name: 'page5',
},
{
id: 6,
name: 'page6',
},
{
id: 7,
name: 'page7',
},
{
id: 8,
name: 'page8',
}
]; 

1 个答案:

答案 0 :(得分:0)

不推荐使用

重定向,使用afterModel钩子。我将1和1的ID发送到章节和页面路径,这应该打到他们的模型钩子。如何分离您的数据,图书模型是否具有所有必要的信息?

http://emberjs.jsbin.com/uDiLIkij/6/edit

afterModel: function(model, transition){
    console.log(transition.targetName); 
    if(transition.targetName=='book.index'){
      var self = this;
      model.get('chapters').then(function(chs){
        var ch = chs.get('firstObject');
        ch.get('pages').then(function(pages){
          var page = pages.get('firstObject');  
          self.transitionTo('page', model, ch, page);
        });
      });
      transition.abort();
    }      
},