手机版

主干网. js中集合的详细说明

时间:2021-10-15 来源:互联网 编辑:宝哥软件园 浏览:

Backbone.js的集合只是一个简单的有序集模型。通过适应模型和集合,我们可以避免将数据处理逻辑放入视图层。此外,模型和集合还提供了一种方便的后端工作方式,当数据发生变化时,可以自动标记主干. js视图。这样,它可以用于以下情况:复制代码如下:模型:动物,收藏:动物园。通常,您的集合只适应一种模型,但模型本身并不限于集合的类型。复制的代码如下:模型:人,集合:办公模型:人,集合:家庭下面是一个常见模型/集合的例子:复制代码如下: varmusic=backbone . model . extend({ initialize 3360 function(){ console . log('欢迎来到音乐世界');}});var相册=主干。collection . extend({ model : Music });

上面的代码告诉我们如何创建集合。但是它没有告诉我们用数据操纵集合的过程。因此,我们来探究一下这个过程:复制代码如下: varmusic=backbone . model . extend({ defaults 3360 { name : '未指定'、artist 3360 '未指定' }、initialize : function(){ console . log('欢迎来到音乐世界');} });var相册=主干。collection . extend({ model : Music });var music1=新音乐({ id: 1,名称: 'How奇异',artist : ' OMC ' });var music 2=新音乐({id: 2,名称: '伤害最深的是什么',artist: '痞子Flatts ' });var myAlbum=新专辑([音乐1,音乐2]);console . log(MyAlBum . models);让我们看看主干网. js集合和其他组件之间的关系:

首先,向集合中添加一个模型。

众所周知,集合就是模型的集合。因此,我们可以向集合中添加模型。要向集合中添加模型,我们可以使用add方法。我们还可以使用unshift方法将模型添加到集合——的开头。复制代码如下: varmusic3=新音乐({id: 3,name3360' yes I do ',artist : " raster flats ' });music . add(music 3);console.log('新增歌曲');console . log(JSON . stringify(Music));其次,从集合中移除模型。

通常,我们需要从集合中移除一些指定的数据。要从集合中移除模型,我们需要提供模型的id。如果我们想用一个完整的新数据集替换原来的数据集,我们可以使用重置方法。复制代码如下: music . remove(1);控制台日志('多么奇怪的删除.');console . log(JSON . stringify(Music));

第三,获取和设置。

如果我们需要从代码中其他地方的集合中获取一个值,我们可以直接使用get方法。此时,我们通过检索将ID值传递给模型。复制代码如下: console . log(JSON . string fy(music . get(2));的set方法有一个有趣的实现。set方法通过传递模型列表来执行集合的“智能”更新。如果列表中的模型不在集合中,它们将被添加到集合中。如果模型已经在集合中,它的属性将被合并。如果集合包含任何不属于列表的模型,该模型将被删除。复制代码如下: varmusic=backbone . model . extend({//此属性应设置为默认默认值3360 {name :''},//设置id属性使集合id属性为: ' id ' });var song=主干。collection . extend({ model : Music });var模型=[{ Name: 'OMC ',id: 1 },{ Name: 'Flatts ',id : 2 }];var集合=新歌(车型);collection.bind('add ',函数(模型){ alert(' addb ')});collection.bind('remove ',function(){ alert(' add ')});车型=[{ Name: 'OMC ',id :1 },{ Name: 'Flatts ',id: 2 },{ Name: ' Jackson ',id : 3 }];collection . add(models);});正如我们上面看到的,我们事先已经有了两个模型,当我们添加第三个模型时,之前的模型保持不变。

四.构造函数和初始化。

当我们创建集合时,我们可以传递模型的初始化数组。可以添加Set比较器作为选项。如果传递的比较器选项为false,则排序被阻止。如果我们定义一个初始化函数,这个函数将在创建集合时被调用。下面描述了几个选项,如果提供了这些选项,它们将被直接添加到集合中:模型和比较器。复制代码如下: vartab=new tab set([tab 1,tab2,tab 3]);var空间=新主干。集合([],{ model : Space });

动词(verb的缩写)托杰森

toJSO方法返回一个数组,该数组包含集合中每个模型的哈希属性。此方法通常用于序列化和持久化整个集合。复制代码如下: varsong=new backbone . collection([{ name : ' flats ' },{name3360' OMC'},{ name : ' Jackson ' }]);alert(JSON . stringify(song));

不及物动词比较器

默认情况下,集合没有比较器。如果我们定义了一个比较器,它可以用来以某种方式保存集合。这意味着当您添加模型时,它将被插入到集合中的适当位置。比较器可以由sortBy定义,也可以将排序后的属性表示为字符串。

SortBy比较器函数获取模型并返回一个数字或字符串。

排序比较器函数得到两个模型。如果第一个模型在第二个模型之前,则返回-1。如果两个模型处于同一级别,则返回0;如果第二个模型在第一个模型之前,则返回1。

我们来看一下例子:复制代码如下:var student=Backbone。模型;var学生=新骨干。收藏;students.comparator=' namestudents.add(新学生({name: 'name1 ',roll : 9 });students.add(新学生({name: 'name2 ',roll : 5 });students.add(新学生({name: 'name3 ',roll : 1 });警惕(学生)。即使我们修改了模型的属性,该组比较器也不会自动重新排序。因此,当估计修改模型属性后排序会受到影响时,我们应该称之为排序。

七、整理。

当模型被添加到集合中时,应该强制集合重新排序。若要在将模型添加到集合时禁用排序,可以传递{sort: false}参数。调用排序的触发器检查此参数。复制代码如下:按类型排序:函数(类型){this。sortkey=typethis . sort();}和view函数:复制代码如下: sortingsbycolumn : function(event){ var type=event . current target . class list[0]this . collections . this . sort by type(type)this . render()} VIII。采摘。

提取:从集合中的每个模型中提取一个属性相当于从迭代器中调用Map并返回一个属性。复制代码如下: varsong=new backbone . collection([{ name : ' flats ' },{name3360' OMC'},{ name : ' Jackson ' }]);var name=songs . pull(' name ');alert(JSON . stringify(name));九.在哪里

其中:使用筛选器返回集合中与传递的属性匹配的所有模型的数组。复制代码如下: varsong=new backbone . collection([{name: ' yes I do ',artist 3360 ' flatts ' },{name3360' how离奇',artist :' how离奇' },{ name : '什么伤害最深,artist : ' flats ' },]);var artists=song . where({ artist : ' Flatts ' });alert(artists . length);十、URL集合中设置的URL属性,会引用服务器的位置。集合中的模型使用这个网址来构造它们自己的网址。复制代码如下: varsongs=backbone . collection . extend({ URL : '/songs ' });var Songs=主干。collection . extend({ URL : function(){ return this . document . URL()'/songs ';}});XI。解析:无论服务器是否返回集合的模型,它在提取时都会被主干调用。这个函数将传递原始响应对象,它应该返回一个添加到集合中的模型属性数组。的默认实现是空操作no-op。只需传递JSON响应,用预先存在的API或更好的命名空间响应重写此操作。复制代码如下: varsongs=backbone . collection . extend({ parse 3360 function(response){ return response . results;}});12.Fetch:从服务器获取默认的模型集,并在检索后将它们设置在集合中。这个选项hash接受成功或错误回调,它传递三个参数(set、response和option)。然后从服务器返回模型数据。用于设置合并和提取的模型。复制代码如下: backbone . sync=function(method,model){ alert(method ' 3360 ' model . URL);};var歌曲=新主干。收藏;songs . URL='/songs ';songs . fetch();

从上面可以看出,光是主干的收集就有这么多方法,掌握它们可以提高代码的质量。

版权声明:主干网. js中集合的详细说明是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。