Backbone学习记录(5)
数据与服务器
var User=Backbone.Model.extend({
defaults:{
name:'susan',
age:18
},
url:'/user'//数据提交的路径
}); var user=new User({name:'lily'});
user.save();//将数据保存到服务器
从这里可以看到,user.save()执行是将数据提交到了user.url。
在妙味课堂backbone初探这节的视频中,它重写了Backbone.sync方法以测试save的第一个参数传入的是create还是update:
Backbone.sync = function(method, model) {
console.log(method + ": " + JSON.stringify(model));
model.id = ;
};
但是我在测试时却发现我的测试结果始终是create。后来发现问题出在backbone的版本上。
我的测试版本是1.1.2,而妙味的测试版本是1.1.0。
Backbone.sync=function(method,model){
model.id=1;//wrong
console.log(method,JSON.stringify(model));
} var User=Backbone.Model.extend({
defaults:{
name:'susan',
age:18
},
url:'user.json'
}); var user=new User({name:'lily'});
user.save({name:'lucy'});
//1.1.2
//create {"name":"lily","age":18}
//create {"name":"lucy","age":18}
Backbone.sync=function(method,model){
model.id=1;//right
console.log(method,JSON.stringify(model));
} var User=Backbone.Model.extend({
defaults:{
name:'susan',
age:18
},
url:'user.json'
}); var user=new User({name:'lily'});
user.save();
user.save({name:'lucy'});
//1.1.0 //create {"name":"lily","age":18} backbone_test.html:14
//update {"name":"lucy","age":18}
跟踪1.1.2的源码:
可以看到,在1.1.2中,是通过get()方式去获取id的值。
而我调试发现。mode.id方式添加的属性是加在这里:在1.1.2的版本中,通过这种方式添加的属性不能用get获取到。
所以,解决办法也想到了,将model.id=1改为model.set("id",1);
Backbone.sync=function(method,model){
model.set('id',1);//right
console.log(method,JSON.stringify(model));
} var User=Backbone.Model.extend({
defaults:{
name:'susan',
age:18
},
url:'user.json'
}); var user=new User({name:'lily'});
user.save();
user.save({name:'lucy'}); //1.1.2 //create {"name":"lily","age":18,"id":1}
//update {"name":"lucy","age":18,"id":1}
fetch()方法 读取数据。
Model和Collection对象都有fetch()方法。调用fetch方法时,fetch内部调用Backbone.sync()方法,传入的method为read。
Backbone.sync=function(method,model){
console.log(method,JSON.stringify(model));
} var User=Backbone.Model.extend({
initialize:function(){
this.on('reset',function(){
console.log('reset');
})
},
url:'user.json'
}); var user=new User();
user.fetch(); // read {}
Backbone.sync=function(method,model){
console.log(method,JSON.stringify(model));
} var User=Backbone.Collection.extend({
initialize:function(){
this.on('reset',function(){
console.log('reset');
})
},
url:'user.json'
}); var user=new User();
user.fetch(); // read []
也可以给fetch方法传递参数,设置url,成功和失败的回调:
var User=Backbone.Model.extend({
initialize:function(){
this.on('reset',function(){
console.log('reset');
})
}
});
var user=new User();
user.fetch({
url:'user.json',
success:function(model,response){//response是服务器返回的数据
console.log(JSON.stringify(response));//{"name":"susan","age":18}
},
error:function(){
console.log("error");
}
});
关于Backbone.sync这个方法,它有一个CRUD的参数(create read update delete)所对应的请求为 POST,GET,PUT,DELETE
Backbone学习记录(5)的更多相关文章
- Backbone学习记录(7)
事件委托 <form> <input type="text" class="txt"> <input type="but ...
- Backbone学习记录(6)
路由 backbone将路由规则和一个方法名绑定到一起,来控制单页的hash,以及单页的前进后退. var UserRouter = Backbone.Router.extend({ routes: ...
- Backbone学习记录(4)
事件绑定 on()方法 调用格式:object.on(event, callback, [context])"change" — 当attributes变化时"chan ...
- Backbone学习记录(3)
创建视图 同前面创建模型和集合的方式一样,Backbone.View.extend()即可创建视图 var UserView=Backbone.View.extend(); var view1=new ...
- Backbone学习记录(2)
创建一个集合 1)new Backbone.Collection()方式 var user=new Backbone.Model({'name':'susan'}); var list=new Bac ...
- Backbone学习记录(1)
去年买的<基于MVC的javascript Web富应用开发>,拖到现在还没看完,作者介绍了三个MVC框架,Spine ,backbone和javascriptMVC.1和2在国内的流行度 ...
- Backbone 学习笔记
Backbone 是一款基于模型-视图-控制器 MVC 模式的轻量级javascript 框架 ,可以用来帮助开发人员创建单页Web应用. 借助Backbone 我们可以使用REST的方式来最小化客户 ...
- Quartz 学习记录1
原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...
- Java 静态内部类与非静态内部类 学习记录.
目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...
随机推荐
- Wordpress播客网站搭建
- es 300G 数据删除 执行计划 curl REST 操作
es 300G 数据删除 [es union_2017执行计划] [测试执行环境]线上D服务器[测试用例]get:curl -XGET ES:9200/_cat/indices?v post:curl ...
- 20170224 SE11删除数据
目的,批量删除错误条目.1.SE11 通过条件找到目标数据,并选中: 2./H 进入debug,回车,更改值 OK_CODE = DEL5 F8 运行则出现删除框,
- 用 nodejs 写一个命令行工具 :创建 react 组件的命令行工具
用 nodejs 写一个命令行工具 :创建 react 组件的命令行工具 前言 上周,同事抱怨说 react 怎么不能像 angular 那样,使用命令行工具来生成一个组件.对呀,平时工作时,想要创建 ...
- physical processor, core, logical processor
Processor Groups https://docs.microsoft.com/en-us/windows/desktop/ProcThread/processor-groups The 64 ...
- YTU 2424: C语言习题 字符串比较
2424: C语言习题 字符串比较 时间限制: 1 Sec 内存限制: 128 MB 提交: 1042 解决: 613 题目描述 写一函数,实现两个字符串的比较.即自己写一个strcmp函数,函数 ...
- 网络编程、三要素、Socket通信、UDP传输、TCP协议、服务端(二十五)
1.网络编程概述 * A:计算机网络 * 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传 ...
- 软件GUI测试中的关注点
[摘要] 本文列数了软件黑盒测试过程中,在被测试软件中可能存在的常见软件问题.本文不会详细讨论基本的软件测试思想与常用技术,仅针对在软件黑盒测试过程中若干的问题做描述,并提供个人的参考测试意见与防范意 ...
- codeforces 441B. Valera and Fruits 解题报告
题目链接:http://codeforces.com/problemset/problem/441/B 题目意思:有 n 棵fruit trees,每课水果树有两个参数描述:水果成熟的时间和这棵树上水 ...
- html5--3.1 form元素
html5--3.1 form元素 学习要点 form元素及其属性 form元素 用来定义一个表单,是建立表单的基础元素,(就类似定义表格的table) 表单的其他元素包含在form元素中,其主要子元 ...