2013-12-08 50 views
0

我想知道如何从一个ObjectController的余烬中返回值。我知道ember不允许循环objectcontrollers,但我需要从我的控制器的信息显示在我的模板。在Ember中循环播放控制器

下面是我想要的数据模板:

<script type="text/x-handlebars" id="summary"> 
    <table class="table table-bordered table-striped"> 
     <thead> 
      <tr> 
       <th>Name</th> 
       <th>Total Expenses</th> 
       <th>Date</th> 
      </tr> 
     </thead> 
     <tbody> 
      {{#each model}} 
       <tr> 
        <td>{{name}}</td> 
        <td>{{expense}}</td> 
        <td>{{formattedDate date}}</td> 
       </tr> 
      {{/each}} 
     </tbody> 
    </table> 
</script> 

下面是这个模板控制器:

App.SummaryController = Ember.ObjectController.extend({ 
    needs: ['expenses'], 
    userExpense: function() { 
     var userExpenseMap = {} 
     var expenses = this.get('controllers.expenses'); 

     expenses.forEach(function(expense){ 

      if(userExpenseMap[expense.get('whoPaid')]){ 
       userExpenseMap[expense.get('whoPaid')] += expense.get('amount'); 
      } 

      else{ 
       userExpenseMap[expense.get('whoPaid')] = expense.get('amount'); 
      } 
     }); 

     userExpenseList = [] 

     for(var key in userExpenseMap){ 

      var obj = {}; 

      obj.name = key; 
      obj.expense = userExpenseMap[key]; 

      userExpenseList.push(obj); 
     } 

     // console.log(userExpenseList); 

     return userExpenseList; 
    }.property('[email protected]') 
}); 

回答

1

您可以在控制器的任何财产迭代,但它必须是一个阵列。所以你可以在你的模板中使用:{{#each userExpense}}

<script type="text/x-handlebars" id="summary"> 
    <table class="table table-bordered table-striped"> 
     <thead> 
      <tr> 
       <th>Name</th> 
       <th>Total Expenses</th> 
       <th>Date</th> 
      </tr> 
     </thead> 
     <tbody> 
      {{#each userExpense}} 
       <tr> 
        <td>{{name}}</td> 
        <td>{{expense}}</td> 
        <td>{{formattedDate date}}</td> 
       </tr> 
      {{/each}} 
     </tbody> 
    </table> 
</script> 
+0

这正是我发布我的问题后所做的,但它不工作。 – vjrngn

+0

嘿玛西奥谢谢:)它的工作原理..有一些问题与烬刷新我的网页..猜我根本没有需要帮助,但我真的很感激快速回复!再次感谢 – vjrngn

+0

没问题。乐意效劳 –