backbone入门小例子
最近听了个backbone的分享,为了避免听不懂,就先做了个小例子
例子很简单,效果如下
基本视图模板:
<script type="tex/template" id="template" >
<span><%=val%></span><span class="swap" style="margin:10px;cursor:pointer;">swap</span><span class="delete" style="margin:10px;cursor:pointer;">delete</span>
</script>
构建基本数据模型和集合:
var Man=Backbone.Model.extend({
defaults:{
name:'张三',
age:'1'
},
});
var ManList = Backbone.Collection.extend({
model:Man
})
基本的视图模型
var ItemView = Backbone.View.extend({
tagName:'li',
/*为视图注册事件*/
events:{
"click span.swap":"swap",
"click span.delete":"remove"
},
initialize:function(){
/*为视图和模型绑定事件*/
_.bindAll(this, 'swap','render','remove','unrender');
this.model.bind('change',this.render);
this.model.bind('remove',this.unrender);
},
render:function(){
var val = this.model.get('name')+""+this.model.get('age');
var html = _.template($("#template" ).html(), {val:val});
$(this.el).html(html);
return this;
},
unrender:function(){
$(this.el).remove();
},
swap:function(){
var swaped = {
name:this.model.get('age'),
age:this.model.get('name')
}
this.model.set(swaped);
},
remove:function(){
this.model.destroy();
}
})
主视图模型
var ListView = Backbone.View.extend({
el:$("body"),
events:{
"click button#add":"addItem"
},
initialize:function(){
/*为主视图和集合绑定事件*/
_.bindAll(this, 'render', 'addItem', 'appendItem');
this.collection = new ManList();
this.collection.bind('add', this.appendItem);
/*初始化主视图*/
this.render();
/*声明主视图的属性*/
this.age = 1;
},
addItem:function(){
this.collection.add(new Man({age:this.age++}))
},
appendItem:function(item){
var itemView = new ItemView({
model: item
}); $(this.el).find('ul').append(itemView.render().el);
},
render:function(){
var self = this;
$(this.el).append('<button id="add">add item</button>');
$(this.el).append("<ul></ul>"); }
})
初始化视图
var listView = new ListView();
backbone入门小例子的更多相关文章
- Selenium WebDriver + Grid2 + RSpec之旅(三) ----入门小例子
Selenium WebDriver + Grid2 + RSpec之旅(三) ----入门小例子 第一个例子都是比较简单的博客园登录界面,就像学习编程语言时候都是从Hello,World!开始. 1 ...
- 基于vue-cli、elementUI的Vue超简单入门小例子
- 这个例子还是比较简单的,独立完成后,能大概知道vue是干嘛的,可以写个todoList的小例子. - 开始写例子之前,先对环境的部署做点简单的介绍,其实和Vue官方的差不多. #如若没有安装过vu ...
- Ajax入门小例子
大牛文章:http://www.cnblogs.com/guduoduo/p/3681296.html ---Ajax基础学习 http:/ ...
- spring+spring mvc+JdbcTemplate 入门小例子
大家使用这个入门时候 最好能够去 搜一下 spring mvc 的 原理,我放一张图到这里,自己琢磨下,后面去学习就容易了 给个链接 (网上一把,千万不能懒) https://www.cnblo ...
- SpringBoot介绍,快速入门小例子,目录结构,不同的启动方式,SpringBoot常用注解
SpringBoot介绍 引言 为了使用ssm框架去开发,准备ssm框架的模板配置 为了Spring整合第三方框架,单独的去编写xml文件 导致ssm项目后期xml文件特别多,维护xml文件的成本也是 ...
- Python In Action:一、入门小例子
Python In Action这本书真是有点猛,一开头就来这么个例子: import wx class MyFrame(wx.Frame): def __init__(self): wx.Frame ...
- mybatis 不整合spring 入门小例子
先上一个搭建完的项目结构截图: 相对比较重要的配置文件有 db.properties , SqlMappingConfig.xml , mapper/User.xml , log4j.properti ...
- SpringBoot_MyBatisPlus快速入门小例子
快速入门 创建一个表 我这里随便创建了一个air空气表 idea连接Mysql数据库 点击右侧database再点击添加数据库 找到Mysql 添加用户名,密码,数据库最后点击测试 测试成功后在右侧就 ...
- css01入门小例子
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
随机推荐
- iOS Development: Proper Use of initWithNibName:bundle: Affects UITableViewController
Address:http://www.outofcore.com/2011/07/ios-development-proper-use-of-initwithnibnamebundle-affects ...
- Checkbox in DataList
一,效果图. 二,源代码. <!DOCTYPE html><html><head> <meta charset="UTF-8"> & ...
- nice Validator参考
快速上手 例1. DOM传参 1. 要验证一个表单,只需要给字段绑定规则“data-rule”就可以了2. 字段可以有多条规则,规则之间用分号(;)分隔3. js初始化不是必要的,只要是字段并且带有“ ...
- 使用Maven打包项目并上传到Linux服务器
Maven打包: 项目右键Run as-->Maven build...--> 出来下面的界面,注意红色部分的填写,Goals填写package表示打包,下面的Skip Tests表示打 ...
- Python 2.7 学习笔记 模块和包
我们来考虑下如下几种场景: 1.编写一个python程序,如果程序比较简单,则可以把代码放到一个python文件中.但如果程序功能比较多,可能需要多个python文件来组织源代码.而这些文件之间的代码 ...
- 【HTTP 2】启用 HTTP 2(Starting HTTP/2)
[HTTP 2]启用 HTTP 2(Starting HTTP/2) 四月 1, 2016 ~ LITECODES 前情提要 在上一篇文章<[HTTP 2]HTTP/2 协议概述(HTTP/2 ...
- scrapy入门
安装完scrapy后,创建一个新的工程: scrapy startproject tutorial 会创建一个tutorial文件夹有以下的文件: tutorial/ scrapy.cfg tutor ...
- java计算两个日期相差多少天
java计算两个日期相差多少天 public class DateUtil{ public static int betweenDays(Date startDate, Date endDate ) ...
- Thinkphp里import的几个使用方法介绍
以下附上import的几个使用方法介绍 1.使用方法一 import('@.Test.Translate'); @,表示项目根文件夹.假定根文件夹是:App/ 导入类库的路径是:App/Lib/Tes ...
- c: c代码书写规范
排版: 较长的语句或函数过程参数(>80字符)要分成多行书写, 长表达式要在低优先级操作符处划分新行,操作符放在新行之首, 划分出的新行要进行适当的缩进,使排版整齐,语句可读 参考: 1. 运算 ...