服务器数据为空时Backbone.js model.fetch

时间:2015-01-23 22:44:16

标签: javascript json backbone.js

我有一个应用程序,我们使用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将获取空数据集?

2 个答案:

答案 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)

在模型中设置默认值

这是文档。 http://backbonejs.org/#Model-defaults