在“角”中,我们有一个充实方法,它运行rest调用来充实数据对象,然后设置一个变量,使隐藏的细节选项卡可见。类似于这个过于简化的示例:
$scope.enrich = function(team){
angular.forEach(team.members, function(member){
member.getSkills().then(function(skills){
member.skills=skills;
}
});
$scope.enrichFinished=true;
};我在细节窗格中获得异常,当enrichFinished为true时将打开该窗格。异常似乎是由于一个筛选器造成的,该过滤器试图在member.skill上筛选并发现成员的技能未定义。我假设问题是,一旦设置了enrichFinished,就会打开detail选项卡,这是在设置member.skills=skill的have子句之前;因此,我们有一个数据集,当我们尝试对其进行筛选时,可能还没有设置技能的数据。
在我实际生成和保存我需要的数据之前,有什么最干净的方法可以告诉角等待在detail选项卡中运行过滤器?实际的充实方法丰富了for循环中3-4个不同的变量。
发布于 2015-03-24 17:03:00
您可以在所有约定解决之后设置$scope.enrichFinished=true;,因此您可以像这样使用$q.all
$scope.enrich = function(team){
$q.all(team.members.map(
function(member){
return member.getSkills().then(
function(skills){
member.skills=skills;
}
);
}
)
).then(function(){
$scope.enrichFinished=true;
});
};https://stackoverflow.com/questions/29238391
复制相似问题