1、模型属性的一些操做方法git
一、mmodel.get() 获取属性的值github
二、mmodel.set('age',5) 更新单个属性的值安全
mmodel.set({name:'aaa',age:6}) 更新多个属性的值this
在设置属性值时,若是该属性不存在,会自动建立该属性;同时会以true的形式返回一个模型的引用。spa
三、mmodel.unset('age') 从模型中删除一个属性3d
四、mmodel.clear() 从模型中删除全部的属性code
五、mmodel.has('age') 检查是否存在某一属性blog
六、mmodel.isValid() 手动触发验证,只会返回true或者false,但不会触发invalid事件
2、HTML转义后的属性值ip
若是用户输入的文字不是纯文本格式,可能会有一些致使XSS注入攻击的安全漏洞,解决的办法就是任何用户输入文字以前使用escape()
1 var testModel = new Backbone.Model({ 2 name : "<script>alert(11)</script>" 3 }); 4 5 var escaped_name = testModel.escape('name');
3、重写setter 方法和 getter方法
一、使用缘由:
(1 属性须要变化格式进行存储
(2 须要一个模型虚拟属性,依赖于其余属性
(3 防止把非法的值赋值给模型属性
二、操做:须要引入mutators.js,到https://github.com/asciidisco/Backbone.Mutators下载 backbone.mutators.js 文件,而后引入到项目中
三、缘由(2)demo:
1 (function($){ 2 3 var testModel = Backbone.Model.extend({ 4 5 6 mutators:{ 7 fullMessage : { 8 get: function(){ 9 return this.get('name') + ' -and-' + this.get('age'); 10 //return this.name + ' -hh-' + this.age; 11 } 12 } 13 } 14 }); 15 16 var t = new testModel; 17 t.set({ 18 name :'Axiba', 19 age : 33 20 }); 21 alert(t.get('fullMessage')); 22 alert(t.get('name')); 23 24 })(jQuery);
四、反过来,重写setter方法的demo,注意key和value:
1 (function($){ 2 3 var testModel = Backbone.Model.extend({ 4 5 6 mutators:{ 7 fullMessage : { 8 get: function(){ 9 return this.get('name') + '-and-' + this.get('age'); 10 }, 11 set: function(key, value, options, set){ 12 var message = value.split('-and-'); 13 this.set('name',message[0],options); 14 this.set('age',message[0],options); 15 } 16 } 17 } 18 }); 19 20 var t = new testModel; 21 t.set({ 22 name :'Axiba', 23 age : '33' 24 }); 25 26 t.set('fullMessage','daomul-and-11'); 27 28 alert(t.get('fullMessage')); 29 alert(t.get('name')); 30 alert(t.get('age')); 31 32 })(jQuery);
五、值得注意的是:
(1 若是是在建立新模型的时候给属性赋值,没有触发到change事件的话,其对应的setter方法是不会触发的。
(2 新的方法会试图先调用被重写的getter和setter方法,再去调用原始的get() 和 set()