javascript代码实例教程-backbonejs中的模型篇(二)

发布时间:2019-01-27 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-backbonejs中的模型篇(二)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。 一:模型标识符

 

  每个模型都有一个用作唯一标识符的ID属性,以便在不同模型间进行区分。通过id属性我们可以直接访问模型对象当中用于标识符存放的属性,默认属性名为id,但也可以通过设置idAttribute来改名。

 

如: VAR _model = Backbone.Model.extend({ idAttribute:'_id'});

 

  testObj = new _model({...})

 

设置id : testObj._id = Math.random().toString(36),substr(2);

 

获取id: var id = testObj._id

 

二:模型属性的验证 (Backbone.Model自带validate)

 

为了控制每个值的规范,我们常常需要对模型的属性进行验证。

 

1:在模型中定义validate()方法来进行属性验证

 

var _model = Backbone.Model.extend({

 

  validate:function(attrs){

 

    if(attrs.name !='test'){ return "name error info";}

 

}});    attrs参数包含了变化了的属性值,如果不合法,会返回一条错误信息。

 

2:验证触发时间

 

  属性验证会在调用save()方法时被触发

 

  调用set()方法时如果传入{validate:true}作为最后一个参数的话也会触发。

 

  如:testObj.set('name','test1',{validate:true});  //设置name值时触发验证

 

在模型验证过程中,仍然可以通过get()和this.attributes来访问到更改之前的属性值

 

validate会在save()之前调用,参数为save()方法传来的更新的属性值,如果验证错误,则save不会执行,触发invalid事件

 

3:验证的错误处理函数,失败的验证会触发invalid事件

 

  a:可以通过模块实例对象绑定invalid事件

 

     testObj.on('invalid',function(model,error){console.LOG(error)}

 

  b:可以把处理验证的方法invalid函数作为参数传给set(),save()等。。

 

    testObj.set({name:'test01'},{

 

      invalid:function(model,error){console.log(error)}

 

    }

 

4: 手动触发验证 ------isValid方法

 

  手动检查一个模型是否合法 testObj.isValid(),注:isValid方法不会触发invalid错误处理函数

 

三:高级的验证方式

 

默认Backbone提供的一种模型属性验证法validate()需要自己创建验证函数,会花掉很多时间。另外一个Backbone扩展插件Backbone.Validation提供很多验证功能,只需要下载插件,并添加引用就可以使用。Backbone.Validation插件重写了Backbone.Model的validate()方法,因此可以用以前的方式调用validate()和isValid()方法

 

操作步骤:

 

1:在初始化时,使用Backbone.Balidation.mixin来扩展Backbone.object()

 

_.extend(Backbone.Model.PRototyPE, Backbone.Validation.mixin)

 

2:在validation属性中定义验证规则

 

如 var _model = Backbone.Model.extend({

 

  validation:{

 

    name:{required: true},

 

    email:{pattern: 'email'}

 

  }

 

});

 

3:使用 var testObj = new _model();

 

    testObj.set({email:'***@QQ.COM'},{validate:true})  //只有在设置email时会触发验证

 

    testObj.isValid(); //false   检测模块是否触发验证

 

    testObj.get('email') ; //undefine          testObj实例的email属性尚未初始化

 

4:validation的内置验证器

 

  required: 验证属性是否是必须的

 

  acceptance:验证属性值是否被接受。如:对类型为boolean的属性值是否为true or false

 

    validation:{

 

      terms:{acceptance:true},

 

    }

 

  min:属性值必须是数字且大于等于指定最小值

 

  max:属性值必须是数字且小于等于指定最大值

 

  range:属性值必须为数字且等于或在两数值之间     range: [2, 18]

 

  length:验证字符串的长度

 

  minLength:验证字符串长度大于或等于指定值

 

  maxLength:验证字符串长度小于或等于指定值

 

  rangeLength:验证字符串长度等于或在指定值之间 

 

  oneof: 验证其值必须为指定数组中的一个         oneOf:["person","organization"]

 

  equalTo: 验证属性值必须等于指定的另外一个属性值         如: passwordRepeat: {equalTo:'password'}

 

      pattern: 验证属性值为指定的模式,也可以是自己定义的一个正则表达式。内置模式有:“number,digITs,email,url”

 

  如: phoneNumber:{pattern: /^ ********** $/}   自定义正则

 

四: 使用Backbone.Validation插件验证htML表单

 

  1:在视图的initialize()方法中把视图绑定到Backbone.Validation对象上

 

    var _view = Backbone.View.extend({

 

      initialize: function (){

 

        Backbone.Validation.bind(this);      

 

      }

 

    })

 

  当用户在更新表单的属性值时,如果是非法信息,Backbone.Validation会为该表单元素添加一个invalid样式,并且在data-error属性中设置一条错误信息。

 

  如:<input type='text' name='name' class='invalid' data-error='Name is required' />

 

 

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-backbonejs中的模型篇(二)全部内容,希望文章能够帮你解决javascript代码实例教程-backbonejs中的模型篇(二)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。