如何在不首先进入路径的情况下加载模型?
App.UsersRoute = Em.Route.extend({
model: function() {
return ['bob', 'sue', 'tom'];
},
setupController: function(controller, model) {
controller.set('model', model);
}
});
Run Code Online (Sandbox Code Playgroud)
从另一个控制器使用
needs: "users"
Run Code Online (Sandbox Code Playgroud)
和
this.get('controllers.users.content');
Run Code Online (Sandbox Code Playgroud)
只要我先访问UsersRoute,就可以正常工作.
将其加载到需要它的最上面的路由中,因此:
App.SomeOtherRoute = Em.Route.extend({
setupController: function(controller, model) {
controller.set('model', model);
this.controllerFor('user').set('model', ['bob', 'sue', 'tom']);
}
});
Run Code Online (Sandbox Code Playgroud)
请注意,如果您使用 ember-data 或 epf 或 ajax,该模型将是一个承诺。您不能将控制器上的模型设置为承诺,因此您可以这样做:
setupController: function(controller, model) {
controller.set('model', model);
return this.get('store').findAll('user').then(function(users) {
this.controllerFor('users').set('model', users);
});
}
Run Code Online (Sandbox Code Playgroud)
请注意,在第二个中我使用的是 UsersController,而不是 UserController,因为您似乎想要一组用户而不是单个用户。