主干.js当服务器数据为空时 model.fetch

Backbone.js model.fetch when server data is empty

本文关键字:model fetch 数据 js 服务器 主干      更新时间:2023-09-26

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

解决方案是斯蒂芬提到的:成功函数。我把它添加到 model.fetch() 函数中:

success: function(model, response /*jshint unused: false */) {
    if (_.isEmpty(response)) {
        view.model.set("id_number", undefined);
    }
},...

仅供参考,将来使用它的任何人:Backbone 不会让你只传递response函数,因为它期望首先model。你可以传递model而不使用它,但你需要上面的注释才能通过JSHint。

在模型中设置默认值

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