2013-03-20 164 views
0

已经有一些问题要求类似的事情,但迄今为止我的答案都不适用。我有以下的代码,在这里我想从UsersController访问模型DashboardController:Ember.js从另一个控制器访问控制器模型

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> 

为什么用户不会装载?我的代码有什么问题? 谢谢

回答

0

您的UsersController中的模型函数是问题的原因。 始终将实际对象(或对象数组)分配给控制器的模型/内容属性。您应该在路由而不是控制器中执行数据获取。我想你也有一个UsersRoute,如果你有一个UsersController?这可能是工作:

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()); 
    } 
}); 
+0

谢谢,我没有UsersRoute,所以我试着去做了,你建议的第二种方法它的工作原理。 – lazzi 2013-03-20 10:14:47

相关问题