这是我的代码,首先,我提出了第一个请求:
$scope.displayuser = function(id){
var token = "xxxxx";
userdisplay
.send(token,id)
.then(function(data){
console.log(data);
$scope.userbyorga = data.users;
$scope.numtickets = [];
for(i = 0; i < data.users.length; i++){
var userid = data.users;
$scope.numtickets[userid.id] = {nbuser:data.users[i].name};
var userarray = JSON.stringify(userid);
localStorage.setItem("myid",userarray);
}
console.log($scope.numtickets);
})
我们必须记住的是:
$scope.numtickets[userid.id] = {nbuser:data.users[i].name};
我在我的阵列中输入了我的用户名并保留了用户的ID
然后我在这里提出了第二个请求,以便与我刚刚向您展示的代码保持一致:
.then(function(){
var tabuser = JSON.parse(localStorage.getItem("myid"));
console.log(tabuser);
var urls = [];
for(i = 0; i < tabuser.length; i++){
urls.push({
url:JSON.stringify("https://cubber.zendesk.com/api/v2/users/"+tabuser[i].id+"/tickets/requested.json")
});
console.log(tabuser[i].id);
console.log($scope.numtickets[tabuser[i].id]);
displayfilter
.user(token,tabuser[i].id)
.then(function(data){
$scope.numtickets[tabuser[i].id]['nbticket'] = data.tickets.length;
console.log($scope.numtickets);
console.log(data.tickets.length);
})
console.log(tabuser[i]);
}
})
};
我们需要记住的是:
$scope.numtickets[tabuser[i].id]['nbticket'] = data.tickets.length;
我推送门票数量并与我用户使用的相同阵列相关联。
我的问题:
在这一行:
$scope.numtickets[tabuser[i].id]['nbticket'] = data.tickets.length;
&#34; $ scope.numtickets [tabuser [i] .id]未定义。&#34; 所以它&#39;不工作有人可以帮助我吗?
我最后想要这样的事情:
{
1: {
'nbuser': 'User name1',
'nbticket': '1',
},
2: {
'nbuser': 'User name2',
'nbticket': '2',
}
3: {
'nbuser': 'User name3',
'nbticket': '2',
}
}
然后在我的视图中显示这个很容易:
<ul ng-repeat="user in numtickets track by $index">
<li>{{user.nbuser}}</li>
<li>{{user.nbticket}}</li>
</ul>
console.log($scope.numtickets[userid.id]);
答案 0 :(得分:1)
for(i = 0; i < tabuser.length; i++){
var currentI = i;
displayfilter
.user(token,tabuser[i].id)
.then(function(data){
$scope.numtickets[tabuser[currentI].id]['nbticket'] = data.tickets.length;
})
}
那我做了什么?我将i
存储在currentI
的本地for
变量中。这应该有效,因为每个currentI变量都是then
函数回调的本地变量,否则你的i将具有值tabuser.length
。这是因为closure
。在for的每次迭代中,您将为then重新创建一个新的回调函数。但是他们会有相同的闭包。他们没有共同的唯一关闭级别将是for循环中声明的每个变量。
您可能也想看看$q.all
,您可以将承诺分组并将它们一起处理,使事情更简单。
注意:这是重复吗?不久前我肯定已经回答了这个问题......