我正在使用node.js / express并且如果服务器上没有数据则返回一个空对象(即:快递端的res.send({}))。
但是,因为我使用的是Backbone myCollection.fetch(....) 我仍然得到一个模型,只是它是空的。
如:
_getLines: function () {
var self = this;
self.m_linesCollection.fetch({
success: function (data) {
$(Elements.FASTERQ_CUSTOMER_LINES).empty();
if (_.size(data.models["0"].attributes) == 0)
return;
},
error: function () {
log('error loading collection data');
}
});
}
正如您所看到的,我正在通过以下方式对客户端进行脏检查:
if(_.size(data.models [“0”]。attributes)== 0)
工作正常...检查是否没有真正的模型回来,但我确信有更好的方法来检查模型是否为空,或从服务器端发送其他东西:/?
看起来很琐碎......我一定错过了什么......
THX,
肖恩。
答案 0 :(得分:0)
这是一个偏好问题,但最简单的方法是让你的服务器返回一个空数组,而不是一个空对象数组。
答案 1 :(得分:0)
Marionettejs是一个固执己见的Backbone框架。在其中,他们定义了效用函数:
isEmpty: function() {
return !this.collection || this.collection.length === 0;
},
您只需添加到视图中即可。您可以在初始化中将其定义为this.isEmpty
,也可以延伸到视图中
var MyView = Backbone.View.extend({ ... });
_.extend( MyView, { isEmpty: function() { ... } });
如果从服务器返回一个空数组,则集合的length属性将等于零,isEmpty
功能将返回true
。
当然,你可以使用
if (this.collection.length == 0) { ... }