我有以下功能:
function createLogos() {
for (var l=0; l<userList().length; l++) {
var username = "https://api.twitch.tv/kraken/users/" + userList()[l];
$.getJSON(username, function(data) {
$(":eq(l)").append("<img src=" + data.logo +">");
});
}
}
但是,eq(l)
无法识别l是什么。用数字代替它,它就像我希望的那样。
任何人都可以理解为什么它可能会像这样吗?
答案 0 :(得分:1)
您可以将$.map()
替换为for
循环,使用$.when()
function createLogos() {
$.when.apply($, $.map(userList(), function(el, index) {
var username = "https://api.twitch.tv/kraken/users/" + el;
return $.getJSON(username, function(data) {
$("#theTable .pic").eq(index).append("<img src=" + data.logo +">");
})
}))
}
答案 1 :(得分:0)
在您的代码中,您正在寻找索引l
而不是循环的当前索引。现在id你是通过引用变量来做的,你将遇到一个不同的问题,因为当代码被命中时我将被评估,因此它将是错误的值。
所以你需要的是在JSON调用之前引用该元素
function createLogos() {
for (var l=0; l<userList().length; l++){
var username = "https://api.twitch.tv/kraken/users/" + userList()[l],
pic = $("#theTable .pic").eq(l);
$.getJSON(username, function(data){
pic.append("<img src=" + data.logo +">");
});
}
}
答案 2 :(得分:0)
尝试连接function createLogos() {
for (var l=0; l<userList().length; l++){
var username = "https://api.twitch.tv/kraken/users/" + userList()[l];
$.getJSON(username, function(data){
$(":eq("+l+")").append("<img src=" + data.logo +">");
})
}
}
希望它能起作用
angular.module('AddressBook', []);
angular.module('AddressBook').controller('PeopleController', PeopleController);
function PeopleController($scope) {
"use strict";
$scope.people = [
{name: "Dani Moss", phone: "1234567890", city: "Richmond"},
{name: "Sarah Parker", phone: "1236548769", city: "Chicago"},
{name: "Little John", phone: "4567853432", city: "Los Angeles"},
{name: "Adam Doe", phone: "9025673152", city: "Las Vegas"}
];
}