backbonejs中的模型篇(三)

一:在模型中使用嵌套属性

Backbone的扩展插件 Backbone-Nested下载并添加引用

1:定义一个新的模型对象,使用Backbone.NestedModel作为其基类对象

var _model = Backbone.NestedModel.extend({...})                    var testObj = new _model()

2: 使用‘.‘操作符来获取或设置嵌套属性值

  testObj.set({ ‘name.title‘: ‘Mr.‘, ‘name.alias‘:‘test02‘})

  testObj.set({
    name:{
      first:‘joan‘,
           last:‘ Smith‘,
           middle:{
             initial:‘P‘,
             full:‘Peter‘
           }
    }
      })    
testObj.get(‘name.middle.full‘)  //Peter
testObj.get(‘name.title‘)   // Mr.
testObj.get(‘name.middle‘)    //{initial:‘P‘,‘full‘:‘Peter‘}

3:嵌套的属性数组

//设置属性数组
testObj.set({
   ‘addresses‘:[
       {city:‘shanghai‘, state:‘sh‘}
       {city:‘changsha‘, state:‘hn‘}
    ]
})
//或者使用.{}来设置数组里面的属性值
testObj.set({‘addresses[1].state‘:‘hunan‘})
//获取属性数组
testObj.get(‘addresses[0].state‘)   //sh
    

Backbone-Nested也重写了get(),set(),has(),toJSON方法,还提供了新的add(),remove()方法

如:add方法添加一个新元素到数组

testObj.add(‘addresses‘,{city:‘yueyang‘,state:‘hunan‘})

remove方法删除一个新元素         testObj.remove(‘addresses[1]‘)

4:为事件change绑定回调函数

testObj.bind(‘change:addresses[0].city‘, function(model,value){

  console.log(value);            //当addresses[0].city 发生改变时, 输出新的值

})

testObj.set(‘addresses[0].city‘,‘xx‘)   //触发绑定事件

backbonejs中的模型篇(三)

时间: 2024-08-05 17:54:23

backbonejs中的模型篇(三)的相关文章

backbonejs中的模型篇(一)

一:模型及属性 模型是MVC应用的基石,它负责存放应用所需的数据,对数据的验证,执行访问控制,以及实现应用所需的特定业务逻辑. backbone通过扩展Backbone.Model对象来定义一个模型. 如:var Mymodel = Backbone.Model.extend({...}); 我们并不需要在模型内部定义一个数据结构,backbone支持在模型初始化时动态定义. 如: mymodeltest = new Mymodel({ date:'2014-08-14', name:'joan

backbonejs中的集合篇(一)

一:集合概念 集合是多个模型,如果把模型model理解为表结构中的行,那么集合collection就是一张表,由多个行组成.我们经常需要用集合来组织和管理多个模型. 二:创建集合 1:扩展Backbone.Collection对象,指定为哪个模型创建集合,传参数model. var _collection = Backbone.Collection.extend({ model: _model }); 2:创建集合实例,传模型数组参数来初始化; 现假定_model的dafault属性为(name

工作中的感悟 (三)三个月碎碎念篇

感慨一下来这里工作已经有一个月了,从最初的不是很适应这里的节奏,到慢慢适应了这里的生活,中间的过程就像经过一场暴风雨的洗礼虽然说的有点夸张,但是也是差不多吧,同在学校比要累很多,不过坚信不管再累.也要坚持既然有人有干,那我们就可以干我们没有什么理由坚持不了.别人可以做到的我们一样可以做到. 刚来的时候以一种无所谓.既兴奋又有很多好奇的心态来到了北京,这里很多人梦想的地方,不禁感慨以后我也在北京这里开始了这里的生活,时间长了究竟会是怎样一种心境呢,据说这里压力大.这里消费高.这里租房忒别烦人,来到

视觉SLAM中的数学基础 第三篇 李群与李代数

视觉SLAM中的数学基础 第三篇 李群与李代数 前言 在SLAM中,除了表达3D旋转与位移之外,我们还要对它们进行估计,因为SLAM整个过程就是在不断地估计机器人的位姿与地图.为了做这件事,需要对变换矩阵进行插值.求导.迭代等操作.例如,在经典ICP问题中,给定了两组3D点,我们要计算它们之间的变换矩阵.假设第一组的3D点为$\mathbf{P}=\{ \mathbf{p}_i | i = [1,2, \ldots, N] \}$,第二组3D点为$\mathbf{Q}=\{ \mathbf{q}

Django中模型(三)

Django中模型(三) 四.模型成员 1.类属性 objects:是Manager类的一个对象,作用是与数据库进行交互. 定义模型类时,没有定义管理器,则默认创建名为objects的管理器. 2.自定义模型管理器 格式:自定义名=models.Manager() 当为模型定义管理器后,Django将不再为模型生成objects模型管理器. 3.自定义管理器Manager类 概述:模型管理器是Django的模型进行与数据库进行交互个接口,一个模型可以有多个管理器. 作用:向管理器类中添加额外的方

隐马尔可夫模型(三)

预测算法 还记得隐马尔可夫模型的三个问题吗?本篇介绍第三个问题:预测问题,即给定模型参数和观测序列,求最有可能的状态序列,有如下两种算法. 近似算法 在每个时刻t选出当前最有可能的状态 it,从而得到一个状态序列. 给定隐马尔可夫模型参数 λ 和长度为T的观测序列O,在时刻 t 处于状态qi的概率为    (1) 其中使用了前向算法和后向算法,于是最有可能的状态的下表 i 为                                     (2) 于是得到状态序列I*=(i1*,i2*,

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

上一节我们提到了如何在一张画布上画一个简单几何图形,通过创建画布,获取WebGLRendering上下文,创建一个简单的着色器,然后将一些顶点数据绑定到gl的Buffer中,最后通过绑定buffer数据,提供buffer中顶点数据的情况,执行渲染绘制方法,将数据结果从buffer中刷新到帧缓存中.整个流程十分清晰明了,可是通过对比原来OpenGL中的整个流程,我们会发现其中还缺少了一些很重要的处理步骤,虽然我们创建了属于自己的着色器,可并没有对顶点数据进行类似于顶点处理管线中的模型视图变换.透视

深入了解CSS中盒子模型

原文:深入了解CSS中盒子模型 CSS中盒子模型介绍# 什么是盒子? 盒子是用来存储物品,我们可以将盒子理解为酒盒,酒盒有什么组成的呢? 有酒可以喝.有填充物保护酒防止酒被摔坏.纸盒子. 我们怎么理解CSS中的盒子呢,CSS中盒子有什么组成的呢?有内容.内边距.边框.外边距. CSS中盒子的主要属性有5种如:width宽度.height高度.padding内边距.border边框.margin外边距. CSS中盒子模型实践# CSS中盒子模型实践,给大家看看我们CSS中的盒子长什么样. 代码块

ThinkPHP中的模型

ThinkPHP中的模型 1.什么是模型(Model) 模型表示企业数据和业务规则,实际项目开发中,主要实现与数据库进行操作. 2.模型的定义规则 模型类的命名规则是除去表前缀的数据表名称,采用驼峰法命名,并且首字母大写,然后加上模型类的关键词Model,再加上类文件后缀.class.php 案例:实现移动办公自动化系统的组织结构功能 ① 设计数据库db_think ② 设计数据表结构(tk_dept) id ???? 编号 ????int 自动增长 主键 name 部门名称 varchar(4