<!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. Google Guava学习笔记——基础工具类String处理类的使用

    不管你喜欢何种编程语言,很多时候针对string编程的处理都是乏味而且爱出错误的,很多时候,我们需要从文件或是数据库中读取数据,或者根据需求重新格式化或排序字符串给用户显示.幸运的是,Guava提供了 ...

  2. WWDC2014 debugging_in_xcode_6 总结

    1.GCD的waiting queue 可以在Xcode左侧的面板中查看. 2.可以对View进行debug类似reveal. 3.查看运行时的对象,对于自定义对象可以实现- (id)debugQui ...

  3. 【BZOJ】【1061】【NOI2008】志愿者招募

    网络流/费用流 OrzOrzOrz,这题太神了不会捉. 题解:https://www.byvoid.com/blog/noi-2008-employee/ 这道题正确的解法是构造网络,求网络最小费用最 ...

  4. [usaco2009febgold]道路翻新 最短路+dp

    这道题居然卡SPFA,难受,写了这么长时间的SPFA,都快把dij忘光了: 设d[i][j]为修j条路到i的最短距离,然后跑堆优化dij就行了: 实测中SPFA两组大数据超时严重: dij约300ms ...

  5. WebService流行框架之Axis和CXF

    转自:http://www.cnblogs.com/snake-hand/archive/2013/06/09/3129915.html 前言 上节课我们对WebService进行了简单的介绍,对于其 ...

  6. struts2漏洞原理及解决办法

    1.原理 Struts2的核心是使用的webwork框架,处理action时通过调用底层的getter/setter方法来处理http的参数,它将每个http参数声明为一个ONGL(这里是ONGL的介 ...

  7. IE8下jQuery改变png图片透明度时出现的黑边问题

    png24格式的图片在用jQuery添加显示隐藏动画时发现,图片的半透明区域出现黑边? 在网上搜了搜主要有以下几种办法: 1.把图片保存成PNG-8格式. 2.把背景色一起切入并保存为JPG格式. 以 ...

  8. iOS7 状态栏 修改为白色字体的步骤

    1在Info.plist中设置UIViewControllerBasedStatusBarAppearance 为NO2 在需要改变状态栏颜色的ViewController中在ViewDidLoad方 ...

  9. ASP.NET 大文件上传的简单处理

    在 ASP.NET 开发的过程中,文件上传往往使用自带的 FileUpload 控件,可是用过的人都知道,这个控件的局限性十分大,最大的问题就在于上传大文件时让开发者尤为的头疼,而且,上传时无法方便的 ...

  10. HDOJ 1428 漫步校园

    漫步校园 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...