1.首先讲一下backbone的原理,backbone的发明就是为了把页面数据实体话,只要修改model层,view层就会跟着变化,就是所谓的MVC
以前的网页处理方式是view + 监听器 + 业务处理 + 返回view重新渲染;使用backbone后的处理方式 view + 视图修改监听器 + model变化 + model修改监听器 +返回view重新渲 染。
2.对于backbone对MVC的实现如果一开始接触backbone,往往会让人很迷惑,我们找到了由model、collection构成的model层,找到了由view构成的View层,然后就自然的认为 router就是controller层,但是发现根本不是那么回事。当backbone的model变化时,我们在model层的initialize方法里设定了监听器,监听器触发了model层里的方法,然后这些 方法又会触发model改变的触发器,然后view层的监听器感知到model层改变触发器,最后view修改视图,听起来很绕,简单来说,为了增加model层,我们不得不在model的前 后各增加一层监听。
3.backbone自带了一些针对model的监听触发器比如add、change,我们也可以自己设定一个监听触发器,首先要设置一个监听器的触发器,this.trigger("触发器名",返回参数), 那么监听器就可以这样用this.model.on("触发器名",“触发的函数名”)。另外要注意的是自带 触发器会返回一大堆有用的参数,可以用debugger工具查一下。
4.backbone的initialize方法并不是构造方法,initialize方法是实体实例化后调用的数据初始化方法,在这个方法里修改model的属性是需要
get/set方法来操作的,backbone也有提供专门的构造方法constructor,constructor的方法其实默认就存在的,只要new的时候时候修改属性就好,如new Model({"id",1})。
5.关于this的使用,在function内部使用,this就代表调用function的那个DOM或者实体对象,我们可以用underscore.js的_.bindAll(对象,‘ 方法名’,‘方法名’......)强行绑定到其他 对象上。
6.关于backbone与服务器交换数据,backbone完全遵照RESTful原则,把model看做资源,在collection中定义url属性,每次调用model的
save()方法就可以根据不同情况发送PUT、POST等请求,也可以用Backbone.syn()方法来手动指定请求方式,要注意的是PUT、GET、
DELETE需要提交model自带的id属性,id也可以通过idAttribute指向其他model的属性,model将会以json的形式被提交。
这里补充一点springMVC的知识,对于json的处理可以用@ResponseBody和@RequestBody来处理
public @ResponseBody Tab create(@PathVariable String viewIdentity, @RequestBody Tab tab),在服务器端定义一个与json各属性名 对应的Tab类,springMVC就会来处理 json和Tab类之间的转换。