所以我有一个控制器,我调用一个服务,从数据库中获取项目,我将这些项目存储在一个数组中,然后我在另一个函数中使用此数组,只有当我这样做时,数组的长度会发生变化,所以我的循环每次都开始时我仍然对回调的行为感到困惑,我认为这就是这个问题背后的原因,这是我的代码:
我的服务:
//get a task by id
getTachebyId : function(id_Data){
return $http.get('/api/taches/' + id_Data);
},
控制器:
//Récupérer les enregistrements de la feuille de temps :
FT.getFT().then(function (result) {
for(var i=0; i<result.data.ftListe.length;i++)
{
//Récupérer le collaborateur :
Compte.getComptesbyId(result.data.ftListe[i].collaborateurid).then(function(result)
{
lecollaborateur.push(result.data.col);
});
// Récupérer les taches remplie dans la feuille de temps et le projet équivalent
Tache.getTachebyId(result.data.ftListe[i].tacheid).then(function(result)
{
task.push(result.data.tachelistes);
});
}
$scope.ftListe = result.data.ftListe;
$scope.task = task;
$scope.lecollaborateur = lecollaborateur;
//$scope.projets = projets;
});
//my function where I use the task array :
$scope.calculTotal= function(id)
{
var couttotal=0;
var count =0;
console.log(task.length);
for (var j=0;j<task.length;j++)
{
if(task[j].projet_id==id)
{ //code }
}
};
如何直接获得长度= 5?
答案 0 :(得分:1)
这是因为您从$ http.get获得的承诺的顺序解决。您可以将所有承诺放在一个数组中,与$q
一起使用,只有在所有承诺都得到解决后才返回。
您可以在Angular应用中以相同的方式使用Dim wordObj As Object
Dim outFile As Object
On Error Resume Next
Set wordObj = GetObject(, "Word.Application")
If wordObj Is Nothing Then
Set wordObj = CreateObject("Word.Application")
End If
Set outFile = wordObj.Documents.Add
wordObj.Visible = True
wordObj.Tables.Add Range:=wordObj.Selection.Range, NumRows:=1, NumColumns:=3
wordObj.Selection.Tables(1).Select
With wordObj.Selection
.TypeText ("test1")
.MoveRight (wordObj.wdCell)
.TypeText ("test2")
.MoveRight (wordObj.wdCell)
.TypeText ("test3")
.MoveLeft (wordObj.wdCell)
.MoveLeft (wordObj.wdCell)
.MoveDown Unit:=wordObj.wdLine, Count:=1
End With
。