如何在Ember JS中正确重新加载路径

时间:2013-02-20 11:53:30

标签: javascript ember.js

我正在使用最新版本的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');
    }
});

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

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

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

由于

P.S。 :这里有一个小提琴http://jsfiddle.net/vsxXj/

1 个答案:

答案 0 :(得分:0)

模型钩子上的Ember文档:

  

“您可以实现将URL转换为模型的钩子   路线“。

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

App.UsersRoute = Em.Route.extend({
    setupController(controller){
        controller.set("content", App.User.findAll());
    }
});