0
我正在学习一些教程代码,并且像大多数教程代码一样,“json”对象是通过将其添加为javascript文件中的简单对象而伪造的。我试图从我在服务器上托管的文件中获取JSON。我试图让这更现实一些。尽管如此,我似乎无法让绑定工作。我的演示代码(我已经工作),但与JavaScript内的“json”对象可以在这里看到。Backbone.js获取JSON的麻烦
我期望的工作可以在这里看到。
我的远程JSON是这里json file位于 - 如果你“叉”我的2个小提琴,测试工具是有你的测试(骨干,下划线,jQuery的所有板载)。
我相信我的问题的症结围绕使用集合的“集合”和“视图”。
var Contacts = Backbone.Collection.extend({
model: Contact,
url: 'http://sturim.me/contacts.json',
parse: function(data) {
return data.objects;
}
});
//define master view
var ContactsView = Backbone.View.extend({
el: $("#contacts"),
initialize: function() {
this.collection = new Contacts();
this.collection.fetch();
this.render();
},
render: function() {
this.$el.find("article").remove();
_.each(this.collection.models, function(item) {
this.renderContact(item);
}, this);
},
renderContact: function(item) {
var contactView = new ContactView({
model: item
});
this.$el.append(contactView.render().el);
}
});
感谢@loganfsmyth - 这让我更加接近。我无法使解析函数完全按照您的方式工作。我必须这样做:“return response.contactsHolder”。哪些事情让事情变得更好。此外,“重置”是否是注册事件的适当地点?是否获取触发器'重置'? – rsturim
@rsturim很高兴它的工作。我不知道'response.contactsHolder'可以工作,因为你发布的代码没有名为response的变量,并且你发布的JSON使用'contacts',所以我假设你必须改变它。 'fetch'在fetch之后被触发,因为fetch会删除并重新创建集合的内容,因此它是放置该渲染的合理位置。骨干虽然非常灵活,所以它更多地取决于你在哪里放置它。 – loganfsmyth
感谢您的帮助 - 这为我澄清了很多事情。 – rsturim