0

我正在使用最新版本的 Ember JS (RC1),但我遇到了架构问题:

我有一个非常简单的用例:用户列表和添加用户的表单。我的路由器:

App.Router.map(function () {   
   this.resource('users', function () {
      this.route('new');
   });
});

我的路线:

App.UsersRoute = Em.Route.extend({
    model:function () {
        return App.User.findAll();
    }
});

我的控制器:

App.UsersNewController = Em.ObjectController.extend({
    saveUser:function () {
        //'content' contains the user
        App.User.save(this.content);    

        // here i want to reload the list of users, but it doesn't work
        // The application goes correctly to the url /users
        // But doesn't call the 'model' function
        this.transitionToRoute('users');
    }
});

正如我在上面的评论中所说,当我创建一个新用户时,我想重定向到用户列表(该部分有效)并通过调用路由的“模型”方法重新加载用户列表(该部分不't)。

我可以在 UsersController 中编写一个方法来重新加载列表,但是我会在 UsersRoute 和 UsersController 之间产生重复。

有人可以帮我解决这个问题吗?

谢谢

PS:这里有一个小提琴http://jsfiddle.net/vsxXj/

4

1 回答 1

0

模型挂钩上的 Ember 文档:

“你可以实现一个钩子,将 URL 转换为这条路由的模型。”

所以我认为这个钩子不适合这种情况。我认为您应该在这种情况下使用 setupController 挂钩。尝试这个:

App.UsersRoute = Em.Route.extend({
    setupController(controller){
        controller.set("content", App.User.findAll());
    }
});
于 2013-02-20T13:14:47.017 回答