如何在编辑下嵌套子资源

时间:2013-12-10 21:28:31

标签: ember.js

我有以下路由器。

App.Router.map(function() {

this.resource('people', function(){

    this.resource('person', { path:'/:person_id' }, function(){
        this.resource('addresses', function(){
            this.resource('addressTypes');
            this.resource('address', { path:'/:address_id' }, function(){
                this.route('edit');
            });
            this.route('create');
        });
        this.route('edit');
    });
    this.route('create');
});

这允许我从人们路由 - >人 - >地址。编辑人我会去找人 - >人 - >编辑(人)。要编辑地址我会去:人 - >人 - >地址 - >编辑(地址)。但我想做的是人 - >人 - >编辑 - > addressEdit。也就是说,我想将addressEdit嵌套在(person)编辑路径下,这样如果我转换到链接到子地址的personEdit,我就可以点击地址并直接转到地址编辑。换句话说,虽然人和地址是两个不同的模型,但我希望人物编辑包含地址编辑。

在编辑(人员ID 1),移动到地址(属于人员ID 1的地址ID 11)时,我希望网址看起来像:app /#/ people / 1 / edit / addresses / 11 / edit

这是我在代码中表达失败的失败尝试:

App.Router.map(function() {

this.resource('people', function(){

    this.resource('person', { path:'/:person_id' }, function(){
        this.resource('addresses', function(){
            this.resource('addressTypes');
            this.resource('address', { path:'/:address_id' }, function(){
                //this.route('edit');
            });
            this.route('create');
        });
        //this.route('edit');
        this.resource('edit', function(){
            this.resource('addresses', function(){
                this.resource('addressTypes');
                this.resource('addressEdit', { path:'/:address_id' }, function(){
                    //this.route('edit');
                });
                this.route('create');
            });
        });
    });
    this.route('create');
});

});

将路径('edit')更改为资源('edit'..)会在从/ app / people / 1转换到/ edit时立即中断应用程序:“未找到路径person.edit”。< / p>

你能提供任何指导吗?谢谢。

1 个答案:

答案 0 :(得分:0)

resource.route链接到现在应为edit。我可能会将其重命名为personEdit

this.resource('personEdit', {path:'edit'}, function(){