一、模型属性的一些操作方法

  1、mmodel.get()   获取属性的值

  2、mmodel.set('age',5)  更新单个属性的值

     mmodel.set({name:'aaa',age:6})  更新多个属性的值

     在设置属性值时,如果该属性不存在,会自动创建该属性;同时会以true的形式返回一个模型的引用。

  3、mmodel.unset('age')  从模型中删除一个属性

  4、mmodel.clear()   从模型中删除所有的属性

  5、mmodel.has('age')   检查是否存在某一属性

  6、mmodel.isValid()   手动触发验证,只会返回true或者false,但不会触发invalid

  

二、HTML转义后的属性值

  如果用户输入的文字不是纯文本格式,可能会有一些导致XSS注入攻击的安全漏洞,解决的办法就是任何用户输入文字之前使用escape()

 var  testModel =  new Backbone.Model({
name : "<script>alert(11)</script>"
}); var escaped_name = testModel.escape('name');

三、重写setter 方法和 getter方法

  1、使用原因:

    (1 属性需要变化格式进行存储

    (2 需要一个模型虚拟属性,依赖于其他属性

    (3  防止把非法的值赋值给模型属性

  2、操作:需要引入mutators.js,到https://github.com/asciidisco/Backbone.Mutators下载 backbone.mutators.js 文件,然后引入到项目中

  3、原因(2)demo:

 (function($){

         var testModel = Backbone.Model.extend({

             mutators:{
fullMessage : {
get: function(){
return this.get('name') + ' -and-' + this.get('age');
//return this.name + ' -hh-' + this.age;
}
}
}
}); var t = new testModel;
t.set({
name :'Axiba',
age : 33
});
alert(t.get('fullMessage'));
alert(t.get('name')); })(jQuery);

  4、反过来,重写setter方法的demo,注意key和value:

 (function($){

         var testModel = Backbone.Model.extend({

             mutators:{
fullMessage : {
get: function(){
return this.get('name') + '-and-' + this.get('age');
},
set: function(key, value, options, set){
var message = value.split('-and-');
this.set('name',message[0],options);
this.set('age',message[0],options);
}
}
}
}); var t = new testModel;
t.set({
name :'Axiba',
age : '33'
}); t.set('fullMessage','daomul-and-11'); alert(t.get('fullMessage'));
alert(t.get('name'));
alert(t.get('age')); })(jQuery);

  5、值得注意的是:

    (1 如果是在创建新模型的时候给属性赋值,没有触发到change事件的话,其对应的setter方法是不会触发的。

    (2 新的方法会试图先调用被重写的getter和setter方法,再去调用原始的get() 和 set()

backbone.js之Model篇 简单总结和深入(2)的更多相关文章

  1. Backbone.js之model篇(一)

    Backbone.js之model篇(一) Backbone 是一个前端 JS 代码 MVC 框架,它不可取代 Jquery,不可取代现有的 template 库.而是和这些结合起来构建复杂的 web ...

  2. backBone.js之Model篇 (1) 简单实例

    “Model是js应用的核心,包括基础的数据以及围绕着这些数据的逻辑:数据转换.验证.属性计算和访问控制”. 一.初始化方法 我们先来看一个demo,initialize,这是一个初始化方法,但是写这 ...

  3. [Backbone.js]如何处理Model里面嵌入的Collection?

    写了近半个月的backbone.js代码,从一开始的todo到现在做仿微信的网页聊天,其中最大的困惑就在于如何处理比较复杂的Model,其内嵌了一个或者多个Collections. 假设我们有一个Pe ...

  4. Backbone学习笔记 - Model篇

    2 Model 在Backbone中,Model用于存储核心数据,可以将数据交互相关的逻辑代码放在这里.基本形式如下: var Human = Backbone.Model.extend({ init ...

  5. Backbone之旅——Model篇

    Backbone作为前端的MVC框架,把后端的设计思想带到前端,使前端代码更加清晰.可维护性大大提高 Backbone依赖于underscore.js和jquery,所以在使用backbone的时候一 ...

  6. js学习第二篇简单语法

    字符串(String)字面量 可以使用单引号或双引号 数组(Array)字面量 定义一个数组: [40, 100, 1, 5, 25, 10] 对象(Object)字面量 定义一个对象: {first ...

  7. Backbone.js 中使用 Model

    前面几篇 Backbone.js 的例子中有使用到 template, 及数据的填充,其实这已经很接近 Model 了.现在来学习怎么创建自己的 Model 类,并简单的使用.Backbone.js ...

  8. backbone.js 教程(1) View & Model & Collection

    Backbone.js Overview 它由Jeremy Ashkenas开发,最初发行于2010-10-13 它是一个轻量的JavaScript类库,只依赖于underscore.js,非强制依赖 ...

  9. MVC、MVP、MVVM、Angular.js、Knockout.js、Backbone.js、React.js、Ember.js、Avalon.js、Vue.js 概念摘录

    注:文章内容都是摘录性文字,自己阅读的一些笔记,方便日后查看. MVC MVC(Model-View-Controller),M 是指业务模型,V 是指用户界面,C 则是控制器,使用 MVC 的目的是 ...

随机推荐

  1. 16 go操作Mysql

    mysql模块下载 mysql模块我们从github上下载,地址为:www.github.com/go-sql-driver/mysql go get "github.com/go-sql- ...

  2. MathType怎么编辑半开半闭区间

    数学中的公式有很多,涉及到各种各样的样式,这些公式都会用到不同的符号,每一个符号用在不同数学问题的公式中,都会有其特定的意义,比如括号.括号这个符号在除了能够表示优先运算之外,还可以代表区间的意思,小 ...

  3. Centos7.3.1611安装mysql5.7.18 rpm教程 并设置datadir

    一.卸载MariaDB CentOS7默认安装MariaDB而不是MySQL,而且yum服务器上也移除了mysql相关的软件包.因为MariaDB和MySQL可能会冲突,故先卸载MariaDB. 1. ...

  4. 通过SSH实现Windows与linux之间传输文件

    Linux是非常好的开发环境,但很多时候我们希望能够在Windows上操作,通过SSH协议可以实现两者之间传输文件. 一 需要在Linux系统上安装ssh-server,有的linux系统自带了. 查 ...

  5. 雪花算法-snowflake

    雪花算法-snowflake 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的. 有 ...

  6. mysql的联表删除

    联表删除: 1.从数据表t1 中把那些id值在数据表t2 里有匹配的记录全删除掉 DELETE t1 FROM t1,t2 WHERE t1.id=t2.id    或DELETE  FROM t1 ...

  7. Apache 配置文件详解

    0x01 禁止目录列表访问 () 备份httpd.conf配置文件,修改内容: <Directory "/web"> Options FollowSymLinks Al ...

  8. 【设计模式】MVC,MVP 和 MVVM 的区别

    复杂的软件必须有清晰合理的架构,否则无法开发和维护. MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用.它本身很容易理解,但是要讲清楚,它与衍生的 MVP ...

  9. Material Design系列第二篇——Getting Started

    Getting Started This lesson teaches you to Apply the Material Theme Design Your Layouts Specify Elev ...

  10. Host 'xxx.xx.xxx.xxx' is not allowed to connect to this MySQL server

    改表法.可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "use ...