gpt4 book ai didi

javascript - Backbone 模型虚拟属性?

转载 作者:行者123 更新时间:2023-11-30 12:43:14 25 4
gpt4 key购买 nike

我的 Backbone 模型中需要虚拟属性,但 Backbone 似乎不支持这一点,我将如何自己实现这一点。

虚拟属性是指仅在客户端维护的属性,不保存/同步到服务器。我想用它们来存储仅与客户端 View 渲染相关的状态信息,例如是否选择/检查模型。我将在 View 的模板呈现中使用模型属性,但我不希望将这些值发送到服务器,或保存在数据库中。

最佳答案

如果你只想在客户端存储模型的属性,为什么不直接使用: model.set({attribute: "client-side only"})代替: model.fetch()

为避免触发变更事件,可以传入: model.set({silent:true})尽管文档不推荐这样做。如果您更喜欢冒险,您也可以重写 set 方法使其真正静音,如本答案中所述:

Truly change a model attribute silently in Backbone.js?

更新:

环顾四周: Backbone.js partial model updateExclude model properties when syncing (Backbone.js)

看起来您拥有的最简单的选择是:model.save(model.changedAttributes(), {patch: true});

或者如果您需要以一种良好的 restful 方式创建/更新这些对象,您可以像这样覆盖主干sync:

 Backbone.Model.extend({

// Overwrite save function
save: function(attrs, options) {
options || (options = {});

// Filter the data to send to the server
delete attrs.selected;
delete attrs.dontSync;

options.data = JSON.stringify(attrs);

// Proxy the call to the original save function
Backbone.Model.prototype.save.call(this, attrs, options);
}
});

图片来源:Simon Boudrias

关于javascript - Backbone 模型虚拟属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23597262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com