是否可以使用ng-init在ng-repeat中进行异步调用?
例如,请考虑以下事项:
<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;
});
}
这对我不起作用,因为我的第二个detail.itemName
中的md-list-item
没有解决任何问题,但我可以看到网络请求,如果我在函数调用中添加断点,我会查看随itemName
属性返回的订单明细。
使用ng-init是否存在限制,阻止其正在重新评估异步操作?
由于
答案 0 :(得分:0)
在那里,我可以看到实施的错误
ng-init
当我获得数据时,我会拨打这些电话。将数据放在该元素的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>