backbone.js之Model篇 简单总结和深入(2)
一、模型属性的一些操作方法
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)的更多相关文章
- Backbone.js之model篇(一)
Backbone.js之model篇(一) Backbone 是一个前端 JS 代码 MVC 框架,它不可取代 Jquery,不可取代现有的 template 库.而是和这些结合起来构建复杂的 web ...
- backBone.js之Model篇 (1) 简单实例
“Model是js应用的核心,包括基础的数据以及围绕着这些数据的逻辑:数据转换.验证.属性计算和访问控制”. 一.初始化方法 我们先来看一个demo,initialize,这是一个初始化方法,但是写这 ...
- [Backbone.js]如何处理Model里面嵌入的Collection?
写了近半个月的backbone.js代码,从一开始的todo到现在做仿微信的网页聊天,其中最大的困惑就在于如何处理比较复杂的Model,其内嵌了一个或者多个Collections. 假设我们有一个Pe ...
- Backbone学习笔记 - Model篇
2 Model 在Backbone中,Model用于存储核心数据,可以将数据交互相关的逻辑代码放在这里.基本形式如下: var Human = Backbone.Model.extend({ init ...
- Backbone之旅——Model篇
Backbone作为前端的MVC框架,把后端的设计思想带到前端,使前端代码更加清晰.可维护性大大提高 Backbone依赖于underscore.js和jquery,所以在使用backbone的时候一 ...
- js学习第二篇简单语法
字符串(String)字面量 可以使用单引号或双引号 数组(Array)字面量 定义一个数组: [40, 100, 1, 5, 25, 10] 对象(Object)字面量 定义一个对象: {first ...
- Backbone.js 中使用 Model
前面几篇 Backbone.js 的例子中有使用到 template, 及数据的填充,其实这已经很接近 Model 了.现在来学习怎么创建自己的 Model 类,并简单的使用.Backbone.js ...
- backbone.js 教程(1) View & Model & Collection
Backbone.js Overview 它由Jeremy Ashkenas开发,最初发行于2010-10-13 它是一个轻量的JavaScript类库,只依赖于underscore.js,非强制依赖 ...
- 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 的目的是 ...
随机推荐
- python06 深浅拷贝原理
preface 这里主要说深浅拷贝的原理.首先说说数字与字符串作为内存对象的重用,请看代码: a1=12345 b1=12345 a2=a1 print(id(a1),id(b1),id(a2)) 打 ...
- ApkTool反编译和重新打包
有时会需要反编译APK,各人有各人的原因,你都懂的…… 准备工作: 下载APKTool,通过下面这个连接进行下载,https://code.google.com/p/android-apktool/d ...
- cp -rf 提示覆盖解决办法
cp覆盖时,无论加什么参数-f之类的还是提示是否覆盖,当文件比较少的时候还可以按Y确认,当很多文件的时候就不好说了 方法一:vi ~/.bashrc # .bashrc # User specific ...
- Servlet3简介
servlet基础知识:http://blog.csdn.net/chjttony/article/details/6086292 ServletContext相关知识:http://blog.csd ...
- python打造线程池
# coding=utf-8 import threading import Queue import time import traceback class ThreadPoolExecutor(o ...
- Tomcat------如何配置域名和80端口
1.打开Tomcat的默认安装路径下的Service.xml文件 路径:C:\Program Files\Apache Software Foundation\Tomcat 8.0\conf\Serv ...
- WAF Bypass数据库特性(MSsql探索篇)
0x01 背景 探索玩了Mysql特性,继续来探索一下MSsql特性. 0x02 测试 常见有5个位置即:select * from admin where id=1[位置一]union[位置二]se ...
- VisualSVN破解
先讲下破解原理 首先,去VisualSVN官网下载最新版本. 传送门:http://www.visualsvn.com/server/download/ 定位到VisualSVN安装目录,C:\Pro ...
- MongoDB(五)-- 副本集(replica Set)
一.副本集介绍 搭建副本集是为了实现mongodb高可用. Mongodb(M)表示主节点,Mongodb(S)表示备节点,Mongodb(A)表示仲裁节点.主备节点存储数据,仲裁节点不存储数据.客户 ...
- 【delphi】Delphi过程、函数传递参数的八种方式
Delphi过程函数传递参数的八种方式