我创建了一个对象数组“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
但是,当我尝试访问它的各个部分时,我的控制台说它是未定义的。
你能帮我理解我做错了什么吗?这是我的控制台. log输出,带有“控制台.log(postsList);”:
[]
0:
id: 306
title: "Another Post"
__proto__: Object
1:
id: 1
title: "Hello world!"
__proto__: Object
length: 2
__proto__: Array(0)
您应该在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);
});
});