一:模型及属性

模型是MVC应用的基石,它负责存放应用所需的数据,对数据的验证,执行访问控制,以及实现应用所需的特定业务逻辑。

backbone通过扩展Backbone.Model对象来定义一个模型。

如:var Mymodel = Backbone.Model.extend({...});

我们并不需要在模型内部定义一个数据结构,backbone支持在模型初始化时动态定义。

如: mymodeltest = new Mymodel({

    date:'2014-08-14',

    name:'joan',

    description:'test'});

1:模型复制

newmodel= mymodeltest.clone(); 得到一个模型独立的副本,此时对mymodeltest模型实例的修改不会反映到newmodel上;如果是赋值给另一个对象,则会反映到另一个对象。

2:设置默认的属性值

如: var _model = Backbone.Model.extend({

    defaults:{date:'', name:'joan', description:'',gender:'women'}

})

var aaa = new  _model({

  description:'testtest'

});

aaa.get('date')!=undefine //true

aaa.get('name') //joan                   aaa.get('description')  //testtest

3:可用函数来设置默认属性值

如:var _model = Backbone.Model.extend({

    defaults:{name: 'joan',

          description: '',

          gender: 'women',

          date: function(){var date = new Date(); return date.toISOString();}}

})

4:initialize()方法

在模型对象被创建后,initialize方法立即被调用来初始化模型对象的属性值

以上defaults中的date属性也可以在initialize方法中设置

initialize:function(){

  if(!this.has('date')){var date = new Date(); this.set('date',date.isISOString());}

}

通过has方法来判断date属性是否在它之前没有被初始化过,避免将其覆盖

通过set方法来设置默认date属性

二:操作模型属性的一些专门的方法

1:get():获取属性的值

2:set():更新或者创建单个属性的值,可以一次更新多个,使用‘键-值’的格式

  如:aaa.set({name:'saly',gender:'Man'})  如果该属性不存在,则会自动创建出该属性。设置成功,返回true,表示一个可用的模型的引用,否则false.

3:unset():从模型中删除一个属性。 如:aaa.unset('description')

4: clear(): 从模型中删除所有的属性。

5:has():检查模型中是否存在某一属性,存在返回true, 如:aaa.has('name'), //true

backbonejs中的模型篇(一)的更多相关文章

  1. backbonejs中的模型篇(三)

    一:在模型中使用嵌套属性 Backbone的扩展插件 Backbone-Nested下载并添加引用 1:定义一个新的模型对象,使用Backbone.NestedModel作为其基类对象 var _mo ...

  2. backbonejs中的模型篇(二)

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

  3. backbonejs中的集合篇(一)

    一:集合概念 集合是多个模型,如果把模型model理解为表结构中的行,那么集合collection就是一张表,由多个行组成.我们经常需要用集合来组织和管理多个模型. 二:创建集合 1:扩展Backbo ...

  4. 15SpringMvc_在业务控制方法中写入模型变量收集参数,且使用@InitBind来解决字符串转日期类型

    之前第12篇文章中提到过在业务控制方法中写入普通变量收集参数的方式,也提到了这种凡方式的弊端(参数很多怎么办),所以这篇文章讲的是在业务控制方法中写入模型变量来收集参数.本文的案例实现的功能是,在注册 ...

  5. CSS中盒模型的理解

    今天突然看到一篇关于CSS中盒模型的文章,忽然觉得自己竟然遗忘了很多小的地方,所以写一篇文章来记忆一下 (摘抄于千与千寻写的CSS盒子模型理解,并在自己基础上添加了一些东西,希望更完善,对大家有帮助) ...

  6. 【GISER&&Painter】Chapter02:WebGL中的模型视图变换

    上一节我们提到了如何在一张画布上画一个简单几何图形,通过创建画布,获取WebGLRendering上下文,创建一个简单的着色器,然后将一些顶点数据绑定到gl的Buffer中,最后通过绑定buffer数 ...

  7. Asp.Net MVC在过滤器中使用模型绑定

    废话不多话,直接上代码 1.创建MVC项目,新建一个过滤器类以及使用到的实体类: public class DemoFiltersAttribute : AuthorizeAttribute { pu ...

  8. 如何在 Creator3D 中切换模型贴图,超级简单!

    效果预览 前两天有伙伴在 QQ 上询问,如何在 Creator 3D 中切换模型贴图.Shawn 之前也没尝试过,不过根据之前 Cocos Creator 的经验以及这几天对 Creator 3D 的 ...

  9. 深入了解CSS中盒子模型

    CSS中盒子模型介绍 什么是盒子? 盒子是用来存储物品,我们可以将盒子理解为酒盒,酒盒有什么组成的呢? 有酒可以喝.有填充物保护酒防止酒被摔坏.纸盒子. 我们怎么理解CSS中的盒子呢,CSS中盒子有什 ...

随机推荐

  1. StopWatch的使用

    //StopWatch在System.Diagnostics命名控件,要使用它就要先引用这个命名空间. //其使用方法如下: //var stopWatch = new StopWatch(); // ...

  2. style不同取值对应的日期、时间格式

    from : http://www.cnblogs.com/Gavinzhao/archive/2009/11/10/1599690.html sql server2000中使用convert来取得d ...

  3. 一种json生成html的思路

    输入: [{ tag:"ul", attribute:{ class:"father6" }, property:{ className:"fathe ...

  4. jQuery里面的普通绑定事件和on委托事件

    以click事件为例: 普通绑定事件:$('.btn1').click(function(){}绑定 on绑定事件:$(document).on('click','.btn2',function(){ ...

  5. org.apache.http.client.CircularRedirectException: Circular redirect to "http://xxx"问题解决

      org.apache.http.client.CircularRedirectException: Circular redirect to "http://xxx"问题解决 ...

  6. c++ 操作符 重载。

    操作符如关系操作符,全局函数的话,必须第一个是class. 1.赋值(=),下标([ ]),调用(())和成员访问箭头(->)等操作符必须定义为成员,如果定义为非成员的话,程序在编译的时候,会发 ...

  7. HTTP refere

    什么是 http refere ? 简言之,放在web浏览器的header上的 当我通过我的主页访问我朋友的网站时,就可以获得refere , 可以获取网页访问流量,也可以防盗链 一般 referer ...

  8. 老笔记本_Win7_U盘_ReadyBoost

    老笔记本 Win7 U盘 ReadyBoost 值得尝试

  9. [转]Java代码(性能)优化总结

    前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用, ...

  10. iOS开发之 Xcode svn更新代码后,不能打开.xcodeproj,因为该项目文件不能被解析

    http://www.cfanz.cn/?c=article&a=read&id=41565 解决方法:    1.对.xcodeproj 文件右键,显示包内容 2.双击打开 proj ...