`
XUST
  • 浏览: 4664 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Backbone 1.0.0 版 API _ Backbone.Model validate 解析

阅读更多

        最近一段时间在学习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}

  

1
1
分享到:
评论

相关推荐

    model_ir_se50.pth

    id_loss model, modified backbone implementation from TreB1eN - InsightFace_Pytorch

    ctdet_coco_dla_2x.pth

    ctdet_coco_dla_2x.pth, 来自GoogleDrivede的预训练模型,基于COCO数据集训练,CenterNet的backbone网络模型文件,论文为Object As Points

    instances_minival2014.json.zip

    《Keras实现Mask R-CNN:深度学习中的实例分割与数据集解析》 在计算机视觉领域,实例分割是一项重要的任务,它旨在识别图像中的每个对象并精确地分割出它们的边界,而不仅仅是分类。Mask R-CNN是Facebook AI ...

    backbone_api_frame

    Backbone_API_frame是一个基于Backbone.js和ExtJS开发的API框架,主要目的是为了提供一个高效、结构化的Web应用开发解决方案。这个框架结合了Backbone.js的模型-视图-控制器(MVC)架构和ExtJS的组件化能力,旨在...

    opencv-4.4.0-vc14_vc15.exe

    ONNX:添加对Resnet_backbone(Torchvision)的支持#16887 EfficientDet模型支持:#17384 新样本/演示: 添加文本识别示例:C ++ / Python FlowNet2光流:#16575 英特尔®推理引擎后端(OpenVINO™): ...

    pvtv_backbone

    本文将深入探讨"pvtv_backbone"这一特定的预训练模型,以及与之相关的"TransCenter V2"。 "PVTv2"( Pyramid Vision Transformer v2)是PVT系列的一个改进版本,它是一个基于Transformer架构的视觉模型。...

    yolact_im700_54_800000.pth

    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

    ctdet_pascal_dla_384.pth, 来自GoogleDrive的预训练模型,基于Pascal VOC数据集训练,CenterNet的backbone网络模型文件,论文为Object As Points

    backbone-marionette-1.0.0-beta6-1.jar

    官方版本,亲测可用

    ssh_full.zip_AOP java_aop_backbone jsp_backbone struts_ssh

    在描述中提到的"AOP java_aop_backbone",这可能指的是在Java环境中使用AOP技术,并且可能与Backbone.js这个JavaScript库有关。Backbone.js是一个轻量级的MV*框架,用于构建富前端应用。然而,通常Backbone.js与后端...

    backbone_underscore_注释版

    例如,Backbone.Model 中的 validate 方法就经常使用 Underscore 函数来验证数据;在视图渲染时,也可能使用 Underscore 模板引擎来动态生成 HTML。 在实际项目中,你可以根据需求选择性地利用这两个库的功能,创建...

    mask_rcnn_ballon.zip

    《深入理解Mask R-CNN:基于“mask_rcnn_ballon.zip”的深度学习实例解析》 在计算机视觉领域,Mask R-CNN是一种先进的卷积神经网络(CNN)架构,专为对象检测和语义分割任务而设计。这个名为“mask_rcnn_ballon....

    Backbone.js(1.1.2) API中文文档.zip Backbone.js离线文档

    Backbone.js是一款轻量级的JavaScript库,专为构建丰富的Web...1.1.2版本的API中文文档是你学习和使用Backbone.js不可或缺的参考资料。通过深入理解和实践,你可以利用Backbone.js构建出高效、模块化的Web应用程序。

    JavaScript_Application_Architecture_with_Backbone.js

    - **Backbone.Model**:负责数据存储及业务逻辑处理。 - **attributes**: 用于保存模型数据的哈希表。 - **sync**: 支持RESTful HTTP同步机制。 - **change**: 当属性发生变化时触发的事件。 - **validate**: ...

    英美概况选修课练习全稿附答案解析.doc

    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. 正确。英国首都伦敦...

    JavaScript的Backbonejs框架入门学习指引_基础知识.doc.pdf

    Backbone.Model提供了数据验证和事件处理机制,当模型的属性发生变化时,会触发`change`事件。 2. **视图(View)**:视图负责呈现和管理用户界面。视图与模型绑定,当模型的状态改变时,视图会自动更新以反映这些...

    JavaScript的Backbonejs框架入门学习指引_基础知识.doc.docx

    Backbone.js 是一个轻量级的JavaScript框架,专门用于构建富客户端Web应用程序。它的设计灵感来源于经典的MVC(Model-View-Controller)模式,帮助开发者结构化前端代码,提高代码的可维护性和可扩展性。以下是对...

    simplefasterRCNN_simplefaster.rcnn_simplefastetrcnn_RCNN_源码.rar

    《深入解析SimpleFaster R-CNN:基于PyTorch的实现》 SimpleFaster R-CNN,作为 Faster R-CNN 的简化版本,是目标检测领域中的一个重要算法。它在保持高效的同时,继承了 Faster R-CNN 的核心思想,即区域提议网络...

    backbone官方Todo示例_修正

    Backbone.js是一个轻量级的JavaScript库,专为构建可维护和可扩展的单页应用程序(SPA)设计。它的核心理念是提供模型(Model)、视图(View)和集合(Collection)等概念,帮助开发者实现数据和界面的解耦,增强代码的组织...

Global site tag (gtag.js) - Google Analytics