要注意是集合的方法还是模型的方法还是jQuery的方法
注意传参需要的类型,返回类型,使用方法
on和listenTo
- on 就是对object的事件监听
- listenTo是对其他object的触发事件进行监听,比如view要在model改变时做处理之类的情况,灵活一些
Collection中的添加和删除
- 添加
1.books.add(books.models[2]);向集合中的指定位置插入模型,如果没有指定位置,默认追加到集合尾部
2.books.push();将模型追加到集合尾部(与add方法的实现相同)
3.books.unshift();将模型插入到集合头部 - 删除
1.books.remove(books.models[2]);从集合中移除一个或多个指定的模型对象
2.books.pop();移除集合尾部的一个模型对象
3.books.shift();移除集合头部的一个模型对象
注:添加和删除的方法都不止一种,区别只是添加和删除的位置不同
Collection中的查找
Collection定义了一系列用于快速从集合中查找我们想要的模型的方法,包括:
1.get():根据模型的唯一标识(id)查找模型对象
2.getByCid():根据模型的cid查找模型对象
3.at():查找集合中指定位置的模型对象
4.where():根据数据对集合的模型进行筛选
Backbone.Router更侧重前端单页应用的导航
collection-reduce
_.reduce(list, iteratee, [memo], [context])
- reduce方法把list中元素归结为一个单独的数值。
- Memo是reduce函数的初始值,会被每一次成功调用iteratee函数的返回值所取代 。
- 如果没有memo传递给reduce的初始调用,iteratee不会被列表中的第一个元素调用。第一个元素将取代memo参数传递给列表中下一个元素调用的iteratee函数。
var sum = _.reduce([1, 2, 3], function(memo, num){ return memo + num; }, 0);
=> 6
flatten
将一个嵌套多层的数组 array(数组) (嵌套可以是任何层数)转换为只有一层的数组。 如果你传递 shallow参数,数组将只减少一维的嵌套。
_.flatten([1, [2], [3, [[4]]]]);
=> [1, 2, 3, 4];
_.flatten([1, [2], [3, [[4]]]], true);
=> [1, 2, 3, [[4]]];
pick _.pick(object, *keys)
返回一个object副本,只过滤出keys(有效的键组成的数组)参数指定的属性值。或者接受一个判断函数,指定挑选哪个key。
_.pick({name: 'moe', age: 50, userid: 'moe1'}, 'name', 'age');
=> {name: 'moe', age: 50}
_.pick({name: 'moe', age: 50, userid: 'moe1'}, function(value, key, object) {
return _.isNumber(value);
});
=> {age: 50}
前端数据和后端数据同步
collection保存数据,需要fetch与后端数据进行同步。
否则后端数据修改,而collection仍会是之前的旧数据
模块的加载
在ES6之前,社区制定了一些模块加载方案,最主要的有CommonJS和AMD两种。前者用于服务器,后者用于浏览器。ES6在语言规格的层面上,实现了模块功能,而且实现得相当简单,完全可以取代现有的CommonJS和AMD规范,成为浏览器和服务器通用的模块解决方案。
网友评论