我有一个应用程序,我们使用model.fetch()从服务器中提取JSON,我们将此作为我们的渲染函数,在模型更改时触发:
if(_.isUndefined(this.model.get("id_number"))){
this.template = initialTemplate;
} else if(this.model.get("id_number") == 0) {
this.template = templateA;
} else {
this.template = templateB;
}
return BaseView.prototype.render.call(this);
在页面加载时,我们还没有做model.fetch()并获取initialTemplate。当用户更改输入时,我们会获取并获取ID为0或其他内容的新模型数据。
现在服务器JSON也有可能变为空{},如果需要,我们需要恢复显示initialTemplate。问题是,如果是这样的话,model.fetch()不会返回任何内容,也不会发生任何变化。如果id_number未定义,则相同。 (如果它为空,它确实有效。)
是否有解决方案,以便Backbone将获取空数据集?
答案 0 :(得分:0)
斯蒂芬提到的解决方案是:成功的功能。我将它添加到了model.fetch()函数:
success: function(model, response /*jshint unused: false */) {
if (_.isEmpty(response)) {
view.model.set("id_number", undefined);
}
},...
对于未来使用此功能的任何人,仅供参考:Backbone不允许您仅将response
传递给该功能,因为它首先需要model
。您可以传递model
而不使用它,但您需要上面的注释才能传递JSHint。
答案 1 :(得分:0)
在模型中设置默认值