<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="lib/json2.js"></script>
<script src="lib/jquery-latest.js"></script>
<script src="lib/underscore.js"></script>
<script src="lib/backbone.js"></script>
<script src="lib/backbone.localStorage.js"></script>
</head>
<body>
<style>
span{display: block;}
</style>
<p id="app"></p>
<button id="btn">Click</button>
<script src="js/demo.js"></script>
</body>
</html>

js:

var DemoModel = Backbone.Model.extend({
defaults: {
name: "King-fly",
age: 23
}
});
var DemoCollection = Backbone.Collection.extend({
model: DemoModel,
localStorage: new Backbone.LocalStorage("Demotodo"),
initialize: function() {
this.on("add", this.triAdd);
},
triAdd: function() {
console.log("DemoCollection add method");
},
done: function(name) {
return this.where({name: name})
}
}); var demoCollection = new DemoCollection; var SpanView = Backbone.View.extend({
tagName: "span",
initialize: function() {
this.render();
this.$el.bind("click",this.clear);
this.listenTo(this.model, "destroy", this.remove)
},
render: function() {
this.$el.html(_.template("My name is <%= name %>,my age is <%= age %>", this.model.toJSON()));
return this;
},
clear: function() {
this.remove();
console.dir(this);
}
}); var DemoView = Backbone.View.extend({
el: "body",
counter: 0,
events: {
"click button#btn": "btnClick",
"click button#clear": "clearData"
},
initialize: function() {
this.listenTo(demoCollection, "add", this.addOne);
// this.listenTo(demoCollection, "")
demoCollection.fetch();
},
clearData: function() {
_.invoke(demoCollection.done("Wuhan"), "destroy");
},
render: function() { },
btnClick: function() {
demoCollection.create({name: "Wuhan", age: 23 + this.counter++});
},
addOne: function(demoModel) {
var view = new SpanView({model: demoModel})
$("#app").append(view.render().el);
},
addAll: function() {
demoCollection.each(this.addOne, this);
}
}) var demoView = new DemoView();

Backbone 应用的关键点是要理清需求的流程,每个View 层的操作对象都有自己的执行逻辑, 理解各View层之间的关系对处理Model层来说至关重要。而作为数据的操作层Collection来说,起相关联数据所展现的复杂度随着view层的增加不断增加。因此控制好collection层显得至关重要。

由于Backbone 是基于Underscore库为基础的,作为函数库的underscore需要更深层次的了解。

Backbone Backbone-localStorage demo的更多相关文章

  1. HTML5 LocalStorage Demo

    <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...

  2. [backbone]backbone.js

    学习文档: 开始学习 Backbone http://www.ibm.com/developerworks/cn/web/wa-backbonejs/

  3. (转)初探Backbone

    (转)http://www.cnblogs.com/yexiaochai/archive/2013/07/27/3219402.html 初探Backbone 前言 Backbone简介 模型 模型和 ...

  4. TodoMVC中的Backbone+MarionetteJS+RequireJS例子源码分析之一

    Marionette牵线木偶,Backbone是脊骨的意思,Marionette是基于Backbone做扩展库,可以理解为把脊骨骨架绑线扯着变成牵线木偶动起来哈哈,使backbone更易使用呵呵! 构 ...

  5. Django+Tastypie作后端,Backbone作前端的TodoMVC

    TodoMVC是各种js框架入门的比较经典的例子,详细可查看github地址https://github.com/tastejs/todomvc 接着上篇文章, 1,先在github上把backbon ...

  6. 初探Backbone

    Backbone简介 中文API:http://www.csser.com/tools/backbone/backbone.js.html 英文API:http://backbonejs.org/ B ...

  7. [转]backbone.js 初探

    本文转自:http://weakfi.iteye.com/blog/1391990 什么是backbone backbone不是脊椎骨,而是帮助开发重量级的javascript应用的框架. 主要提供了 ...

  8. requirejs、backbone.js配置

    requirejs初探 参考资料官网:http://requirejs.org中文译文:http://makingmobile.org/docs/tools/requirejs-api-zh reuq ...

  9. undercore & Backbone对AMD的支持(Require.js中如何使用undercore & Backbone)

    RequireJS填补了前端模块化开发的空缺,RequireJS遵循AMD(异步模块定义,Asynchronous Module Definition)规范,越来越多的框架支持AMD,像最近的jQue ...

  10. Backbone实例todos分析

    源码来自:http://todomvc.com/examples/backbone/ 这是一个用Backbone.js完成的待办事项实例,精简但完善,可以帮助很好的帮助理解Backbone的API,M ...

随机推荐

  1. javascript 对象数组排序

    参考地址:http://blog.csdn.net/kavensu/article/details/17851329

  2. elasticsearch-查询的基本语法

    elasticsearch的查询有两部分组成:query and filter. 两者的主要区别在于:filter是不计算相关性的,同时可以cache.因此,filter速度要快于query. 先记录 ...

  3. 【Flatten Binary Tree to Linked List】cpp

    题目: Given a binary tree, flatten it to a linked list in-place. For example,Given 1 / \ 2 5 / \ \ 3 4 ...

  4. 【BZOJ】【1049】【HAOI2006】数字序列

    DP 第一问比较水……a[i]-=i 以后就变成最长不下降子序列问题了,第二问这个结论好神奇,考试的时候怎么破?大胆猜想,不用证明?TAT 题解:http://pan.baidu.com/share/ ...

  5. iTunes Connect TERMS OF SERVICE

    iTunes Connect TERMS OF SERVICE THESE TERMS OF SERVICE CONSTITUTE A LEGAL AGREEMENT BETWEEN YOU AND ...

  6. protobuf的安装和使用

    以下全部基于win7系统. protobuf是什么,有什么用网上说的已经很多了.这里就是说一下怎么使用.就当给自己做个笔记吧. .proto文件的语法什么的也请网上查看,挺多的. 第一步: 下载pro ...

  7. VSS

    A deleted file of the same name already exists in this VSS project. Do you want to recover the delet ...

  8. 手写PE文件(一)

    DOS Header(IMAGE_DOS_HEADER)->64 Byte DOS头部 DOS Stub 112字节 "PE"00(Signature) 4个字节 IMAGE ...

  9. 为 PHP 开发者准备的 12 个调试工具

    PHP是在实践中发展迅速并被最多使用的脚本语言:包含了诸如详细的文档.庞大的社区.无数可使用的脚本及支持框架等许多特性.PHP提供的这些特性使得它比Python或Ruby等脚本语言更容易上手. 为构建 ...

  10. 【算法】E.W.Dijkstra算术表达式求值

    算术表达式求值 我们要学习的一个栈的用例同时也是展示泛型的应用的一个经典例子,就是用来计算算术表达式的值,例如 ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) ) 如果将4乘以5,把3 ...