最近一段时间在学习backbone,发现网上的很多资料都是旧版本的,有一些儿不适用于backbone1.0.0的最新版,尤其validate这个方法的用法。
最老的旧版中,说的是:调用model的set方法会默认调用model的validate方法;稍微旧的版本中,说到调用model的set方法,传入{silent: true},可以启动validate校验,调用save方法会强制进行校验;在1.0.0的版本中,我们来看下官网的explain:
validatemodel.validate(attributes, options)
This method is left undefined, and you're encouraged to override it with your custom validation logic, if you have any that can be performed in JavaScript. By defaultvalidate is called before save, but can also be called before set if {validate:true}is passed. The validate method is passed the model attributes, as well as the options from set or save. If the attributes are valid, don't return anything from validate; if they are invalid, return an error of your choosing. It can be as simple as a string error message to be displayed, or a complete error object that describes the error programmatically. If validate returns an error, save will not continue, and the model attributes will not be modified on the server. Failed validations trigger an "invalid"event, and set the validationError property on the model with the value returned by this method.
validate方法在Backbone.Model中留下来,在继承Model的时候重写(自定义)validate方法。调用save方法前默认会调用validate方法,当然调用set方法,如果传入{validate: true}也可以调用validate方法。
如果向model添加的attribute通过校验,validate不会返回任何值,如果没有通过校验(invalid),会返回你在validate方法中定义的错误。校验失败,会触发invalid事件,并且填充model的validateErro属性值。
var Chapter = Backbone.Model.extend({ validate: function(attrs, options) { if (attrs.end < attrs.start) { return "can't end before it starts"; } } }); var one = new Chapter({ title : "Chapter One: The Beginning" }); one.on("invalid", function(model, error) { alert(model.get("title") + " " + error); }); one.save({ start: 15, end: 10 });
如果你在chrome下跑个demo,你会发现save方法如果不传入{validate: true},即使验证不通过,one.toJSON()会发现start和end的值还是改变了。
var Chapter = Backbone.Model.extend({ validate: function(attrs, options) { if (attrs.end < attrs.start) { return "can't end before it starts"; } } }); var one = new Chapter({ title : "Chapter One: The Beginning" }); one.on("invalid", function(model, error) { alert(model.get("title") + " " + error); }); one.save({ start: 15, end: 10 }); 输出:false one.toJSON()
输出:Object {title: "Chapter One: The Beginning", start: 15, end: 10} one.save({ start: 25, end: 10 }); 输出:false one.toJSON() 输出:Object {title: "Chapter One: The Beginning", start: 25, end: 10} one.save({ start: 35, end: 10 }, {validate: true}); 输出:false one.toJSON() 输出:Object {title: "Chapter One: The Beginning", start: 25, end: 10}
相关推荐
id_loss model, modified backbone implementation from TreB1eN - InsightFace_Pytorch
ctdet_coco_dla_2x.pth, 来自GoogleDrivede的预训练模型,基于COCO数据集训练,CenterNet的backbone网络模型文件,论文为Object As Points
《Keras实现Mask R-CNN:深度学习中的实例分割与数据集解析》 在计算机视觉领域,实例分割是一项重要的任务,它旨在识别图像中的每个对象并精确地分割出它们的边界,而不仅仅是分类。Mask R-CNN是Facebook AI ...
Backbone_API_frame是一个基于Backbone.js和ExtJS开发的API框架,主要目的是为了提供一个高效、结构化的Web应用开发解决方案。这个框架结合了Backbone.js的模型-视图-控制器(MVC)架构和ExtJS的组件化能力,旨在...
ONNX:添加对Resnet_backbone(Torchvision)的支持#16887 EfficientDet模型支持:#17384 新样本/演示: 添加文本识别示例:C ++ / Python FlowNet2光流:#16575 英特尔®推理引擎后端(OpenVINO™): ...
本文将深入探讨"pvtv_backbone"这一特定的预训练模型,以及与之相关的"TransCenter V2"。 "PVTv2"( Pyramid Vision Transformer v2)是PVT系列的一个改进版本,它是一个基于Transformer架构的视觉模型。...
YOLACT预训练模型,Image Size:700 Backbone:Resnet101-FPN To evalute the model, put the corresponding weights file in the ./weights directory and run one of the following commands. The name of each ...
ctdet_pascal_dla_384.pth, 来自GoogleDrive的预训练模型,基于Pascal VOC数据集训练,CenterNet的backbone网络模型文件,论文为Object As Points
官方版本,亲测可用
在描述中提到的"AOP java_aop_backbone",这可能指的是在Java环境中使用AOP技术,并且可能与Backbone.js这个JavaScript库有关。Backbone.js是一个轻量级的MV*框架,用于构建富前端应用。然而,通常Backbone.js与后端...
例如,Backbone.Model 中的 validate 方法就经常使用 Underscore 函数来验证数据;在视图渲染时,也可能使用 Underscore 模板引擎来动态生成 HTML。 在实际项目中,你可以根据需求选择性地利用这两个库的功能,创建...
《深入理解Mask R-CNN:基于“mask_rcnn_ballon.zip”的深度学习实例解析》 在计算机视觉领域,Mask R-CNN是一种先进的卷积神经网络(CNN)架构,专为对象检测和语义分割任务而设计。这个名为“mask_rcnn_ballon....
Backbone.js是一款轻量级的JavaScript库,专为构建丰富的Web...1.1.2版本的API中文文档是你学习和使用Backbone.js不可或缺的参考资料。通过深入理解和实践,你可以利用Backbone.js构建出高效、模块化的Web应用程序。
- **Backbone.Model**:负责数据存储及业务逻辑处理。 - **attributes**: 用于保存模型数据的哈希表。 - **sync**: 支持RESTful HTTP同步机制。 - **change**: 当属性发生变化时触发的事件。 - **validate**: ...
2. The Pennines are known as the “Backbone of England”. 正确。潘宁山脉被称为“英格兰的脊梁”。 3. London, the capital of the UK, is situated on the Thames River near its mouth. 正确。英国首都伦敦...
Backbone.Model提供了数据验证和事件处理机制,当模型的属性发生变化时,会触发`change`事件。 2. **视图(View)**:视图负责呈现和管理用户界面。视图与模型绑定,当模型的状态改变时,视图会自动更新以反映这些...
Backbone.js 是一个轻量级的JavaScript框架,专门用于构建富客户端Web应用程序。它的设计灵感来源于经典的MVC(Model-View-Controller)模式,帮助开发者结构化前端代码,提高代码的可维护性和可扩展性。以下是对...
《深入解析SimpleFaster R-CNN:基于PyTorch的实现》 SimpleFaster R-CNN,作为 Faster R-CNN 的简化版本,是目标检测领域中的一个重要算法。它在保持高效的同时,继承了 Faster R-CNN 的核心思想,即区域提议网络...