【发布时间】:2014-12-28 03:58:20
【问题描述】:
我在组织几个月内传入 Backbone 模型的 JSON 时遇到了一些麻烦(我得到了一个空集合)。我试图尽可能明确,所以 Year Collection 实际上是这样设置每个参数的。
所以我有一个名为 Year 的 Backbone 集合,它是 Backbone 模型 Month 的集合,它又具有一个 events 属性,它是模型 Event 的集合。
$(function(){
var Event = Backbone.Model.extend({
});
var Events = Backbone.Collection.extend ({
model: Event
});
var Month = Backbone.Model.extend ({
});
var Year = Backbone.Collection.extend ({
model: Month,
url: '/api/v1/calendar/2014'
});
window.Calendar = new Year();
var promise = Calendar.fetch();
promise.done(function(response){
if ('events' in response) {
console.log('Events found');
response = response.events;
// Cycle through events and add to Collection
for (var i = 0; i < response.length; i++) {
var currentMonth = response[i].startdate.split('-');
thisEvent = new Event(response[i]);
thisMonth = new Month({
'name': currentMonth[1],
'events': new Events(thisEvent)
});
Calendar.add(thisMonth);
console.log('Set ' + currentMonth[1] + ' with Event ' + response[i]);
}
} else {
console.error('Zero events');
}
}).fail(function(response){
console.error('Failed to fetch Calendar');
});
});
我传入的JSON很简单,是这样的
{
"status": "success",
"year": 2014,
"events": [
{
"title": "None",
"startdate": "2014-01-23",
"description": "Event Description"
},
{
"title": "None",
"startdate": "2014-01-25",
"description": "Event Description 2"
}
]
}
我不太清楚为什么我得到一个空集合。我最不确定的是用new Events(response[i]) 设置Month 模型。理想情况下,我会用new Events 初始化events 键,然后将response[i] 添加到它。
任何帮助将不胜感激,
谢谢
【问题讨论】:
-
抓取时使用promise
-
这是否意味着在初始化时获取?
-
我对@987654331@ 部分感到有些困惑。这只是你的代码的一个模型,还是你实际上是在使用这个实现,你在每次迭代时实例化
thisEvent和thisMonth?我不明白你关于获得一个你没想到的数组的最后一个问题。您的意思是服务器响应(您的 JSON 对象)没有按预期输入,还是您的for loop生成了意外的数组。如果您指的是for loop...好吧,您并没有修改任何数组(!)。如果您提供更多详细信息,我可以提供帮助。
标签: json backbone.js collections