2016-07-18 108 views
0

是否可以使用ng-init在ng-repeat內部進行異步調用?使用ng-init與異步操作

例如考慮以下因素:

<div ng-repeat="order in orders"> 
    <md-list> 
     <md-list-item> 
      {{order.id}} 
     </md-list-item> 

     <md-list-item ng-init="detail = getOrderDetail(order.id)"> 
      {{detail.itemName}} 
     </md-list-item> 
    </md-list 
</div> 

我想調用一個函數爲每個項目被一再重複這會去通過HTTP獲取一些額外的數據。

所以在我的getOrderDetail我有一些這樣的事情:

function getOrderDetail(id) { 
    return myService.getOrderDetails(id).then(function(orderDetail){ 
     return orderDetail; 
    }); 
} 

在我的第二md-list-item對我來說,這並不工作,爲detail.itemName不能解決任何事情,但我可以看到對網絡提出要求如果我在函數調用中添加斷點,我會看到itemName屬性出現時返回的訂單明細。

使用ng-init時,是否存在限制,以防止其工作重新評估異步操作?

感謝

+0

使用ng-init這裏沒有意義。 –

回答

0

在那裏,我可以看到幾件事情錯實現

  1. 另一個錯誤的事情是,你不應該使用ng-init這種情況
  2. 這不是你如何使它工作,就像你正在考慮的那樣,從promise中返回的數據將直接放入一個變量中。

我會想辦法讓那些通話時,我得到的數據&將數據放在該元素的order對象,這樣我可以從特定的順序僅

angular.forEach(orders, function(order){ 
    getOrderDetail(id).then(function(response){ 
     order.detail = response; 
    }) 
}); 

HTML

後來抓細節
<div ng-repeat="order in orders"> 
    <md-list> 
     <md-list-item> 
      {{order.id}} 
     </md-list-item> 
     <md-list-item> 
      {{order.detail.itemName}} 
     </md-list-item> 
    </md-list> 
</div> 
+0

Downvoter能否請你解釋一下在評論中寫下爲什麼downvote?如果您感覺有問題,請發表評論,我會很感激。此外,同樣會幫助我進一步提高.. –

+0

@KevinB感謝您的領導先生,但背後downvote的原因是? –

+0

謝謝 - 我確實已經完成了這樣的事情,這更多的是這個ng-init的使用是否可行並且您已經回答了合適的問題。 – mindparse