我正在使用最新版本的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/
答案 0 :(得分:0)
模型钩子上的Ember文档:
“您可以实现将URL转换为模型的钩子 路线“。
所以我不认为这个钩子适合这种情况。我认为你应该在这种情况下使用setupController钩子。试试这个:
App.UsersRoute = Em.Route.extend({
setupController(controller){
controller.set("content", App.User.findAll());
}
});