Javascript 从JSON文件呈现主干集合未完全工作
我到处寻找答案,解释为什么应用程序没有从我的JSON文件中呈现我的列表集合,但我就是弄不明白 所以我所要做的就是从我的JSON文件中呈现一个列表——非常简单,但就是不起作用 非常感谢您的帮助。我已经发布了我的代码,并把一个版本放在一个网站上 通过控制台运行代码,我可以在DOM中看到json数据,但我看不到任何数据 谢谢 App.js:Javascript 从JSON文件呈现主干集合未完全工作,javascript,json,backbone.js,collections,mustache,Javascript,Json,Backbone.js,Collections,Mustache,我到处寻找答案,解释为什么应用程序没有从我的JSON文件中呈现我的列表集合,但我就是弄不明白 所以我所要做的就是从我的JSON文件中呈现一个列表——非常简单,但就是不起作用 非常感谢您的帮助。我已经发布了我的代码,并把一个版本放在一个网站上 通过控制台运行代码,我可以在DOM中看到json数据,但我看不到任何数据 谢谢 App.js: // MODELS var EventModel = Backbone.Model.extend({ initialize: fu
// MODELS
var EventModel = Backbone.Model.extend({
initialize: function() {
this.on('change', function() {
eventView.render();
});
},
defaults: {
"name": "No title entered",
"description": "No description entered",
"startdate": "No start date"
}
});
var eventModel = new EventModel();
// COLLECTIONS
var EventCollection = Backbone.Collection.extend({
model: EventModel,
url: 'data/getEvents.json',
initialize: function() {
this.on('reset', function() {
eventListView.render();
}),
console.log('running init function for EventCollection');
this.fetch({async: false});
console.log(this.toJSON()); //This will log the loaded collection
},
parse: function(data) {
console.log('running parse');
return _.map(data, _.identity);
},
reset: function(models, options) {
if (options && options.parse) {
delete options.parse;
models = this.parse(models);
}
return Backbone.Collection.prototype.reset.call(this, models, options);
}
});
var eventCollection = new EventCollection();
// VIEWS
var EventView = Backbone.View.extend({
tagName: 'li',
className: 'single-model',
render: function() {
var el = this.el;
$(el).html(Mustache.render($('#stream_getEvents').text()));
return this;
}
});
var EventListView = Backbone.View.extend({
el: $('#list'),
tagName: 'ul',
id: 'list-view',
initalize: function() {
this.collection.on('add', this.addOne, this);
this.collection.on('reset', this.addAll, this);
},
render: function() {
this.addAll();
},
addOne: function(eventModel) {
var eventView = new EventView({model: eventModel});
this.$el.append(eventView.render().el);
},
addAll: function() {
this.collection.forEach(this.addOne, this);
}
});
// rendering
var eventView = new EventView({model: eventModel});
var eventListView = new EventListView({collection: eventCollection});
function event(){
eventView.render();
eventListView.render();
$('#list').html(eventListView.$el.html());
console.log('clicked button');
}
$('.button-getEvents').click(event);
我认为您缺少胡子模板渲染中的模型
$(el).html(Mustache.render($('#stream_getEvents').text(), this.model));
谢谢你,乔纳森。我确实在模板渲染中添加了模态(哎呀,愚蠢的错误),但是我仍然看不到数据。。控制台中也没有错误。很难判断,因为在检索getEvents.json时,jsbin会报告404个错误。大概getEvents.json的格式是正确的?如果在事件函数中打印以控制台集合,会得到什么。尝试插入
console.log(eventCollection)代码>作为function event()
对象{length=3,models=[3],_byId={…},more…}的第一行-这就是它打印出来的内容。。json url为(缺少…/mpl/getEvents.json)。。。我注意到,运行我的本地版本时,我在控制台中看到了数据,但通过我的js bin,我在控制台中什么也看不到..是的,jsbin抛出了一个域访问错误“No”access Control Allow Origin…,简言之,这意味着它无法访问您的域数据。假设您的数据请求良好。您是否尝试过通过EventListView进行跟踪以查看实际发生的情况。。。将console.log放在每个函数(render、addOne、addAll等)的开头,以查看视图是否正在尝试呈现集合。