sách gpt4 ai đã đi

Xác thực mô hình Backbone.js chỉ khi set->save (không phải khi fetch)

In lại 作者:行者123 更新时间:2023-12-04 06:46:29 30 4
mua khóa gpt4 Nike

警告:我正在使用一个我无法完全控制的后端,所以我正在努力解决 Backbone 中的一些注意事项,这些注意事项可能在其他地方更好地解决......不幸的是,我别无选择,只能在这里处理它们!

所以,我的问题是,我真的很想验证来自表单的用户输入(当我在 Backbone 模型上用它设置值时),但是我从新创建的对象上的 API 收到的模型(通过只接受名称的帖子) , 并且仅返回名称和对象 ID) 将无法通过我的验证检查。

例如,当在数据库中创建一个新对象时,两个键字段被填充为空字符串(因此当 Backbone 命中 API 并填充模型时,它会用空字符串填充这些键)。当用户在编辑后保存这些对象时,我想强制他们输入这两个键的值——考虑到 Backbone 的内置验证方法,这很容易。

当然,问题是验证同时触发了 fetch->set(不需要的行为)和 set->save(需要的行为)——所以新创建的模型根本不会加载......Backbone 收集它们,验证失败,并触发错误。

所以,我的问题是:是否有一种“Backbone-y”方法来仅验证 set->save 上的模型,而不是 fetch->set 上的模型?我可以使用特定的触发器来解决这个问题吗?

Bất kỳ ý tưởng nào cũng được hoan nghênh.

1 Câu trả lời

Backbone.Model.set如果您传入 { silent: true },则不会执行验证, 和 fetch将传递任何选项以进行设置,因此您可以覆盖 fetch或者自己写 fetchSilent在选项对象中传递它的方法。

但是,您可能会遇到 Backbone.Collection.fetch 的小问题。 ,因为当它从服务器接收属性时,它不会创建带有 bộ 的新模型。 .相反,它使用 model = new this.model(attrs, {collection: this}); 创建了一个新模型。然后如果有 validate 则执行验证对象上的方法。

这有点烦人。您可以通过定义 phân tích 来绕过它。您的集合上的方法(如果您正在使用),它会静默创建模型(使用 {silent: true} ),因为当 Backbone.Collection.add收到一个完整的 Backbone 模型,它不会运行验证。 (参见 annotated source TRONG _add_prepareModel 方法)。

集合以这种方式工作有点烦人,但是(至少现在)它就是这样。

关于Backbone.js 模型验证仅在 set->save 时(不是在 fetch 时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7044268/

30 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com