1、模块 集合 视图 和事件的一个综合例子

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="jquery-1.9.1.js"></script>
<script src="underscore.js"></script>
<script src="backbone.js"></script> </head>
<body>
<button id="check">新手报到</button>
<ul id="world-list">
</ul>
<script>
(function ($) { var World=Backbone.Model.extend({
name:null //为什么要创建一个空的name
}); var Worlds=Backbone.Collection.extend({
initialize:function(models,options){
this.on("add", options.view.addOneWorld);//初始化绑定add方法
}
}); var AppView=Backbone.View.extend({
el:$('body'),//指定关联的元素
initialize:function(){//初始化方法
this.worlds=new Worlds(null,{view:this})//实例化一个集合,并且建一个属性view用来保存视图
},
events:{
'click #check':"checkIn"//绑定#check的click事件
},
checkIn:function(){
var world_name=prompt("请问,您是哪星人?");
world_name||(world_name = '未知'); var world=new World({name:world_name});//实例化一个模块,并设置name的值
this.worlds.add(world);//将模块添加到集合
},
addOneWorld:function(model){
$("#world-list").append("<li>这里是来自 <b>" + model.get('name') + "</b> 星球的问候</li>");
}
});
var appview = new AppView;//实例化AppView })(jQuery);
</script>
</body>
</html>

2、为对象添加验证规则与错误提示

var User=Backbone.Model.extend({
defaults:{
name:'susan',
age:18
},
url:"1.html",//需要设置url,因为save会调用sync方法把数据提交到服务器
initialize:function(){
this.on("invalid",function(model,error){//初始化时绑定验证未通过时的事件处理函数
console.log(error);
});
},
validate:function(attributes){//重写验证方法 不返回或返回falsy值(假值)时不会触发invalid?
if(attributes.name==""){
return "name 不能为空!";
}
}
});
var user=new User();
user.set("name","");
user.save();//当save时会触发validate方法

3 根目录 urlRoot

var Book = Backbone.Model.extend({
urlRoot:'/backbone_test',
defaults:{"name":"Su","age":14}
}); var solaris = new Book({id: "data.php"}); console.log(solaris.url());///backbone_test/data.php solaris.save();

4 使用fetch从服务端获取数据(collection中并没有urlRoot属性)

var Book = Backbone.Model.extend({//创建一个Model
defaults : {
title:'default'
}
}); var BookShelf = Backbone.Collection.extend({//创建一个集合
model : Book,
url:'user.json'
}); var book1 = new Book({title : 'book1'});//实例化二个model
var book2 = new Book({title : 'book2'}); var bookShelf = new BookShelf([book1, book2]); //实例化集合,并将这2个model添加到集合中,也可以使用collection.add(model)添加。 // bookShelf.url = 'user.json'; //或者在这里添加url
bookShelf.fetch({
success:function(collection, response, options){
collection.each(function(book){
console.log(book.get('title'));//default
});
},error:function(collection, response, options){
console.log('error');
}
});

6 create方法 发送数据到服务端

var NewBooks = Backbone.Collection.extend({
model: Book,
url: '/books/'
}); var books = new NewBooks; var onebook = books.create({
title: "I'm coming",
});

create方法会在内部调用save方法,而save方法前面提过它会调用sync把数据提交到服务器。看源码也可以知道,create方法最后返回了创建的model实例

Backbone.js入门教程第二版笔记(1)的更多相关文章

  1. Backbone.js入门教程第二版笔记(3)

    视图渲染 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...

  2. Backbone.js入门教程第二版笔记(2)

    关于手动触发router,之前看到的例子都是通过在url后面加上#xxx或者点击一个a链接方法来触发, 还有一种情况是通过触发一种规则,来触发另一种规则(表述无能),比如这个例子中,我在url后面加上 ...

  3. Backbone.js入门教程

    原文: Getting Started with Backbone.js 不像其它的Web开发语言,过去Javascript很少可用的架构.令人感到高兴的是,最近几年这种情况得到非常大的改善. 今天我 ...

  4. D3.js 入门教程

    最近需要用到d3, 记录下d3的教程 网上搜了几个关于d3的教程 D3.js 入门教程      http://wiki.jikexueyuan.com/project/d3wiki/author.h ...

  5. 【特别推荐】Node.js 入门教程和学习资源汇总

    这篇文章与大家分享一批很有用的 Node.js 入门教程和学习资源.Node 是一个服务器端的 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用 ...

  6. python核心编程第二版笔记

    python核心编程第二版笔记由网友提供:open168 python核心编程--笔记(很详细,建议收藏) 解释器options:1.1 –d   提供调试输出1.2 –O   生成优化的字节码(生成 ...

  7. Node.js 入门教程和学习资源汇总

    这篇文章与大家分享一批很有用的 Node.js 入门教程和学习资源.Node 是一个服务器端的 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用 ...

  8. 【CC2530入门教程-增强版】基础技能综合实训案例(基础版)-上位机源码

    [CC2530入门教程-增强版]基础技能综合实训案例(基础版)-上位机源码 广东职业技术学院  欧浩源 一.需求分析 按照指定参数打开串口,与测控终端建立数据传输通道,并根据应用要求实现程序逻辑,具体 ...

  9. Vue.js 入门教程

    Vue.js 入门教程:https://cn.vuejs.org/v2/guide/index.html

随机推荐

  1. Get Luffy Out (poj 2723 二分+2-SAT)

    Language: Default Get Luffy Out Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7969   ...

  2. Hive中的一些点

    hive严格模式 Hive中Order by和Sort by的区别是什么? hive中order by,sort by, distribute by, cluster by作用以及用法 Hadoop ...

  3. YTU 2878: 结构体--学生信息排序

    2878: 结构体--学生信息排序 时间限制: 1 Sec  内存限制: 128 MB 提交: 297  解决: 148 题目描述 定义存放一个学生信息的结构体类型,学生信息包括:姓名,学号,性别,院 ...

  4. dict built-in function

    映射类型:字典 字典是无序的,映射类型对象里哈希值和被指向的对象是一对多的关系,字典中的键必须是可哈希的,所有不可变的类型都是可哈希的,另外针对数字键来说,值相等的两个数字是相同的键,例如1和1.0: ...

  5. Oracle:varchar2、nvarchar2 字段类型的区别

    一直对varchar2.nvarchar2 字段类型存储字符数不清楚,现测试如下: 创建TT测试表 测试脚本如下: insert into tt values('1111','1111');  --- ...

  6. xcode添加背景音乐/音效

    xcode添加音效:http://www.cnblogs.com/jiayongqiang/p/5625886.html 背景音乐: ios播放音乐时会用到一个叫做AVAudioPlayer的类,这个 ...

  7. [Selenium] 如何使用Chrome Options 定制测试Chrome 浏览器的特定属性 (类似FirefoxProfiles)

    Chrome Options 类似于FirefoxProfiles,用于定制待测试的Chrome 浏览器的特定属性 1)如果希望测试某个浏览器插件,可通过addExtensions方式提前加载以.cr ...

  8. Name That Number

    链接 分析:找出每一个字母对应的数字,然后看字典里面那个与其匹配 /* ID: **** PROG: namenum LANG: C++ */ #include<iostream> #in ...

  9. 修改RedHat的系统显示时间

    1.修改日期 date -s 12/21/2012 2.修改时间 date -s 15:14:00 3.检查硬件(CMOS)时间 clock -r 4.将系统时间写入CMOS clock -w 切记四 ...

  10. 041--Jquery

    一.Jquery对象 jQuery 对象就是通过jQuery包装DOM对象后产生的对象.jQuery 对象是 jQuery 独有的. 如果一个对象是 jQuery 对象, 那么它就可以使用 jQuer ...