我觉得这个问题很愚蠢,但我就像3天前一样...我建立了一个php api休息,返回一个json编码信息。 api返回的json是正确的,就像这样:
[
{"pk_user":"1","name":"George","surname":"Littlewolf","profile":"Game designer - Developer"},
{"pk_user":"2","name":"Anne","surname":"Carpenter","profile":"Developer"},
{"pk_user":"3","name":"John","surname":"Sullivan","profile":"Designer"},
{"pk_user":"4","name":"Judith","surname":"Lenders","profile":"Developer"},
{"pk_user":"5","name":"Jason","surname":"Middleton","profile":"Manager"}
]
之后,我正在创建一个攻击api的骨干前端。我只开发了一个视图,它读取了我上面写的json。我有一个模型(用户)和一个集合(用户),我想保存从json信息中读取的信息。
我将只放置视图的render函数的代码:
render: function() {
var users = new Users();
users.fetch();
$.each(users['models'], function(i, item) {
console.log(item);
});
this.template = _.template(template, {users : users});
this.$el.html(this.template);
return this;
}
现在,控制台仅返回您在下一张图片中看到的内容:
我想直接访问这些项目,但我不知道为什么,但我尝试过的所有内容都不起作用...谢谢,请原谅我对新手的解释...... 修改
我uploaded the code to a hosting给所有希望“现场”看到问题的人。
答案 0 :(得分:3)
fetch
是一个AJAX调用,所以这个:
users.fetch();
不会立即填写集合,它必须等待服务器响应。所以,当你去看users.models
时,那里就没有任何东西,你的观点最终无所作为。
通常的方法是监听来自users
的事件并呈现HTML以响应这些事件:
initialize: function() {
this.collection = new Users;
this.listenTo(this.collection, 'reset', this.render);
// bind to other events as needed...
this.users.fetch({ reset: true });
},
render: function() {
this.collection.each(function(user) {
// render the `user` model in here...
});
}
请注意切换到this.collection.each
,而不是直接弄乱集合的models
属性。
或者,在致电fetch
时使用成功处理程序:
this.users.fetch({
success: function(collection) {
collection.each(function(user) {
// render the `user` model in here...
});
}
});
答案 1 :(得分:0)
不确定它是否是您想要的,但如果您想记录用户的属性,请执行以下操作:
$.each(users['models'], function(i, item) {
console.log(item.attributes);
});