Ember.js从另一个控制器访问控制器模型

时间:2013-03-20 09:38:01

标签: ember.js

已经有几个问题要求类似的事情,但到目前为止,没有一个答案对我有用。我有以下代码,我想从DashboardController中的UsersController访问模型:

JP.DashboardController =  Ember.ArrayController.extend({
  needs: ['users']
});

JP.UsersController =  Ember.ArrayController.extend({
      model: function(){
        return JP.User.find();
    },
    sortProperties: ['id']
});

我的dashboard.template看起来像这样:

<div class="row-fluid">
  <div class="span2">
    {{#if controllers.users.isLoaded}}
            {{#each user in controllers.users }}
                {{user.name}}
            {{/each}}
    {{else}}
            Users not loaded
    {{/if}}
  </div>
  <div class="span10">
      {{ outlet }}
  </div>
</div>

为什么用户从未加载?我的代码出了什么问题? 感谢

1 个答案:

答案 0 :(得分:0)

UsersController中的模型函数是导致问题的原因。 始终将实际对象(或对象数组)分配给控制器的model / content属性。你应该在Route而不是Controller中进行数据提取。如果你有一个UsersController,我想你也有一个UsersRoute?这可能有效:

JP.UsersRoute = Ember.Route.extend({
  setupController : function(controller){
   // the controller param is the instance of UsersController
   controller.set("model",JP.User.find());
  }
});
JP.UsersController =  Ember.ArrayController.extend({
    sortProperties: ['id']
});

如果您没有UsersRoute而只有DashboardRoute,请尝试以下方法:

JP.DashboardRoute = Ember.Route.extend({
  setupController : function(controller){
   // the controller param is the instance of DashboardController, so we have to get the UsersController first
   this.controller("users").set("model",JP.User.find());
  }
});
相关问题