Backbone的属性验证有2种方法:

1.Backbone自带简单的验证方法,但是验证规则需要自己实现

通过validate()方法进行验证,验证规则写在此方法里。

  1. var RoomModel = Backbone.Model.extend({
  2.  
  3. validate:function(attrs){
  4. //验证规则
  5. if(!attrs.name){
  6. return "名字不能为空";
  7. }
  8.  
  9. }
  10.  
  11. });

那么什么时候调用validate()完成验证呢?

在调用save()方法时validate()方法被触发,来完成验证,如果validate()返回错误信息,那么save()方法会停止执行,模型的属性也不会被更改。失败的验证还会触发invalid事件。

如果在set()方法中传入参数{validate:true},作为最后一个参数,也会触发validate()方法,完成验证。

var room =new RoomModel()

room.set('name','test',{validate:true})

以上都是属性的自动验证

属性的手动验证:room.isValid()//返回true/false,这种验证不会触发invalid事件

2.利用Backbone扩展插件Backbone.Validation进行属性验证,Backbone.Validation重写了validate()方法,常用的验证规则已经实现,可以直接使用,节约时间

首先要从GitHub网站上下载Backbone.Validation,然后引用文件backbone-validation.js。

使用Backbone.Validation.mixin来扩展Backbone.object():_.extend(Backbone.Model.prototype,Backbone.Validation.mixin)

在validation属性中定义具体的验证规则

  1. var UserModel = Backbone.Model.extend({
  2. validation:{
  3. name:{
  4. required:true
  5. },
  6. email:{
  7. pattern: 'email'
  8. }
  9.  
  10. }
  11. });

验证属性:

1. required:验证模型的某个属性是否必须,值为true/false

2.acceptance:验证某些事情是否被接收,值为true/false

3.min:验证属性值,必须为数字,模型某个属性值只有大于或等于指定的最小值才能验证成功

4.max:验证属性值,必须为数字,模型某个属性值只有小于或等于指定的最大值才能验证成功

5.range:验证属性值,必须为数字,模型某个属性值只有等于指定的某个数值或者在指定的两个值之间才能验证成功

6.length:验证属性值,模型某个属性值的长度必须为指定长度的字符串。

7.minLength:验证属性值,必须为数字,模型某个属性值的长度只有大于或等于指定的最小值才能验证成功

8.maxLength:验证属性值,必须为数字,模型某个属性值的长度只有小于或等于指定的最大值才能验证成功

9.rangeLength:验证属性值,必须为数字,模型某个属性值的长度只有等于指定的某个数值或者在指定的两个值之间才能验证成功

10.one Of:用来验证属性值,必须等于指定的数组当中的一个元素,是区分大小写的

11.equalTo: 验证等于指定另外一个的属性值

12.pattern:验证匹配指定的模式,模式可以是正则表达式,也可以是内置的模式名称

内置模式名称:

number:匹配任意十进制的数字

digits:匹配任意数字序列

email:匹配合法的邮件地址

url:匹配任意合法的URL

 

backbone学习笔记:模型(Model)(2)属性验证的更多相关文章

  1. Backbone学习笔记一Backbone中的MVC

    原文章地址http://bigdots.github.io/2015/12/01/Backbone学习笔记(一)/#more Backbone.js为复杂WEB应用程序提供模型(models).集合( ...

  2. SQL反模式学习笔记6 支持可变属性【实体-属性-值】

    目标:支持可变属性 反模式:使用泛型属性表.这种设计成为实体-属性-值(EAV),也可叫做开放架构.名-值对. 优点:通过增加一张额外的表,可以有以下好处 (1)表中的列很少: (2)新增属性时,不需 ...

  3. SQL反模式学习笔记8 多列属性

    目标:存储多值属性 反模式:创建多个列.比如一个人具有多个电话号码.座机号码.手机号码等. 1.查询:多个列的话,查询时可能不得不用IN,或者多个OR: 2.添加.删除时确保唯一性.判断是否有值:这些 ...

  4. Python3+Selenium3+webdriver学习笔记10(元素属性、页面源码)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记10(元素属性.页面源码)'''from selenium i ...

  5. backbone学习笔记:模型(Model)(1)基础知识

    backbone为复杂Javascript应用程序提供MVC(Model View Controller)框架,框架里最基本的是Model(模型),它用来处理数据,对数据进行验证,完成后台数据与前台数 ...

  6. 【再探backbone 01】模型-Model

    前言 点保存时候不注意发出来了,有需要的朋友将就看吧,还在更新...... 几个月前学习了一下backbone,这段时间也用了下,感觉之前对backbone的学习很是基础,前几天有个园友问我如何将路由 ...

  7. tensorflow学习笔记——模型持久化的原理,将CKPT转为pb文件,使用pb模型预测

    由题目就可以看出,本节内容分为三部分,第一部分就是如何将训练好的模型持久化,并学习模型持久化的原理,第二部分就是如何将CKPT转化为pb文件,第三部分就是如何使用pb模型进行预测. 一,模型持久化 为 ...

  8. 学习笔记之Model selection and evaluation

    学习笔记之scikit-learn - 浩然119 - 博客园 https://www.cnblogs.com/pegasus923/p/9997485.html 3. Model selection ...

  9. Asp.net MVC4高级编程学习笔记-模型学习第五课MVC表单和HTML辅助方法20171101

    MVC表单和HTML辅助方法 一.表单的使用. 表单中的action与method特性.Action表示表单要提交往那里,因此这里就有一个URL.这个URL可以是相对或绝对地址.表单默认的method ...

随机推荐

  1. java中unicode和中文相互转换

    package test.com.gjob.services; import java.util.Properties; public class Test { public static void ...

  2. RGB转灰度图的几种算法

    https://blog.csdn.net/cool1949/article/details/6649429 方法一:    对于彩色转灰度,有一个很著名的心理学公式: Gray = R*0.299 ...

  3. 安卓程序代写 网上程序代写[原]C语言基础

    C 作者:han1202012 发表于2013-11-1 19:53:29 原文链接 阅读:28 评论:0 查看评论

  4. Recommended Practices for WPF Custom Control Developers

    I have always found that there isn’t enough documentation about Custom Control development in WPF. M ...

  5. Zookeeper 快速理解

    转自:http://blog.csdn.net/colorant/article/details/8444283 == 是什么 == 目标Scope(解决什么问题) 为分布式系统提供高可靠性的协同工作 ...

  6. HtmlUnitDriver 网页内容动态抓取

    #抓取内容 WebDriver driver = new HtmlUnitDriver(false); driver.get(url); String html = driver.getPageSou ...

  7. 原创:用VBA实现将鼠标选择的单元格按照指定格式合并并复制到剪切板

    原创:用VBA实现将鼠标选择的单元格按照指定格式合并并复制到剪切板 一.主要实现以下功能:1.用鼠标选择单元格(可谓连续单元格,也可为不连续的)后,按照要求格式“证件号码:+选定内容+“,”+”选定内 ...

  8. 第三百五十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—将selenium操作谷歌浏览器集成到scrapy中

    第三百五十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—将selenium操作谷歌浏览器集成到scrapy中 1.爬虫文件 dispatcher.connect()信号分发器,第一个参数信 ...

  9. Python——with语句、context manager类型和contextlib库

    目录 一.with语句 二.上下文管理器 三.contextlib模块 基本概念 上下文管理协议(Context Management Protocol) 包含方法 __enter__() 和 __e ...

  10. ssh命令详解3

    SSH 的详细使用方法如下: ssh [-l login_name] [hostname | user@hostname] [command] ssh [-afgknqtvxCPX246] [-c b ...