主干集合在API不返回数据时添加空对象
我有以下问题:我的API返回null-没有可用的数据。(太好了!)。我的主干集合在API不返回数据时添加空对象,api,backbone.js,backbone.js-collections,Api,Backbone.js,Backbone.js Collections,我有以下问题:我的API返回null-没有可用的数据。(太好了!)。我的集合获取数据,但创建一个空对象 我的API结果(来自Firebug): {"data":{"objects":null}} var MyCollection = Backbone.Collection.extend({ model: MyModel, url: '/v1/ajax/load-objects', parse: function(resp, xhr) { return
集合
获取数据,但创建一个空对象
我的API结果(来自Firebug):
{"data":{"objects":null}}
var MyCollection = Backbone.Collection.extend({
model: MyModel,
url: '/v1/ajax/load-objects',
parse: function(resp, xhr) {
return resp.data.objects;
}
});
我的收藏:
{"data":{"objects":null}}
var MyCollection = Backbone.Collection.extend({
model: MyModel,
url: '/v1/ajax/load-objects',
parse: function(resp, xhr) {
return resp.data.objects;
}
});
当我在视图中打印self.model.toJSON()
时(模型就是集合),我得到了这个(Firebug):
我的问题:为什么集合会在我的集合中放置一个空对象?API返回null,因此它应该为空
我尝试将默认值添加到我的模型中(集合使用),但没有显示它们。我猜它是把空值作为一个对象的数据。我怎样才能阻止他这样做
Thx
罗恩好的,现在它似乎起作用了。但我真的不明白为什么:) 我在模型中添加了(空)
默认值
。现在它起作用了
var MyModel = Backbone.Model.extend({
defaults: {
},
initialize: function () {
var self = this;
}
});
如果您浏览一下主干网的源代码,就会发现集合中的模型是由 一旦
Collection.set
解析了您的数据,它将检查您实际返回的数据,并在值(null
在您的情况下)不是数组时创建一个数组:
var singular = !_.isArray(models);
models = singular ? [models] : models.slice();
然后处理此模型列表并在集合中创建单个模型
解决方案很简单:在parse
中点击null
值时返回一个空数组:
var MyCollection = Backbone.Collection.extend({
model: MyModel,
url: '/v1/ajax/load-objects',
parse: function(resp, xhr) {
return resp.data.objects || [];
}
});
还有一个模拟您的问题及其解决方案的演示:当
对象
为空时,您是否尝试返回空数组([]
)?IIRC主干网希望从parse
返回一个数组。我猜它会看到您返回一个单一对象(null),并假设您需要一个单元素长的数组