emberjs使用"需要"但其他控制器模型为空

gp.*_*gp. 5 ember.js

如何在不首先进入路径的情况下加载模型?

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,就可以正常工作.

Mic*_*ton 3

将其加载到需要它的最上面的路由中,因此:

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,因为您似乎想要一组用户而不是单个用户。