我已经创建了一个对象数组“ postsList”,其中包含了我可以登录控制台的信息。
var postsList = [];
var postsCollection = new wp.api.collections.Posts();
postsCollection.fetch({
data: {
per_page: 20
}
}).done(function( posts ) {
postsCollection.each( function( post ){
//console.log( post.attributes );
postTitle = post.attributes.title.rendered;
postID = post.attributes.id;
postsList.push({
id: postID,
title: postTitle
});
});
});
console.log(postsList); // this works
console.log(postsList[0].id); // this doesn't work - Undefined
但是,当我尝试访问它的各个部分时,我的控制台说它是未定义的。
您能帮助我了解我在做什么吗?这是我的console.log输出,内容为“ console.log(postsList);”:
[]
0:
id: 306
title: "Another Post"
__proto__: Object
1:
id: 1
title: "Hello world!"
__proto__: Object
length: 2
__proto__: Array(0)
答案 0 :(得分:1)
您应该将数据记录在done
回调中。 AJAX中的“ A”代表异步,这意味着其余代码将在不等待AJAX调用完成的情况下执行。对于您而言,您正在尝试在AJAX调用完成之前记录数据。
var postsList = [];
var postsCollection = new wp.api.collections.Posts();
postsCollection.fetch({
data: {
per_page: 20
}
}).done(function( posts ) {
postsCollection.each( function( post ){
//console.log( post.attributes );
postTitle = post.attributes.title.rendered;
postID = post.attributes.id;
postsList.push({
id: postID,
title: postTitle
});
console.log(postsList);
console.log(postsList[0].id);
});
});