2013-03-20 162 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

相關問題