backbone点滴

1.

/**
 * 模型 - Model
 */
var Note = Backbone.Model.extend({
    defaults: {
        title: ‘‘,
        created_at: new Date()
    },
    initialize: function() {
        console.log(‘新创建了一条笔记:‘ + this.get(‘title‘));
        this.on(‘change‘, function(model, options) {
           console.log(‘属性的值发生了变化‘);
        });
        this.on(‘change:title‘, function(model, options) {
            console.log(‘title 属性发生了变化‘);
        });
        this.on(‘invalid‘, function(model, error) {
            console.log(error);
        })
    },
    validate: function(attributes, options) {
        if (attributes.title.length < 3) {
            return ‘笔记的标题字符数要大于 3‘;
        }
    }
});

/**
 * 视图 - View
 */
var NoteView = Backbone.View.extend({
    tagName: ‘li‘,
    className: ‘item‘,
    attributes: {
        ‘data-role‘: ‘list‘
    },
    template: _.template(jQuery(‘#list-template‘).html()),

    render: function() {
        this.$el.html(this.template(this.model.attributes));
        return this;
    }
});
/**
 * 集合 - Collection
 */
var NoteCollection = Backbone.Collection.extend({
    model: Note,
    initialize: function() {
        this.on({
            ‘add‘: function(model, collection, options) {
                console.log(‘ID: ‘ + model.id + ‘模型添加到了集合里‘);
            },
            ‘remove‘: function(model, collection, options) {
                console.log(‘ID: ‘ + model.id + ‘模型从集合里删除掉了‘);
            },
            ‘change‘: function(model, options) {
                console.log(‘集合里的模型发生了变化‘);
            }
        });
    }
});
//学习到的
/**
*   var ss = new NoteCollection();
     ss.add({id: 4, title: ‘西红柿炒鸡蛋的做法‘});//可以这样子新添加一个
     ss.add({id: 4, title: ‘西红柿炒鸡蛋的做法‘},{merge:true});
     还有remove,reset,pop,shift
     set方法可以设置remove:false的
*/

/**
 * 集合视图 - Collection View
 */
var NoteCollectionView = Backbone.View.extend({
    tagName: ‘ul‘,
    initialize: function() {
        this.collection.on(‘add‘, this.addOne, this);
        this.render();
    },
    render: function() {
        this.collection.each(this.addOne, this);
        return this;
    },
    addOne: function(note) {
        var noteView = new NoteView({model: note});
        this.$el.append(noteView.render().el);
    }
});
/**
 * 测试
 */

var note1 = new Note({id: 1, title: ‘西红柿炒鸡蛋的做法‘});
var note2 = new Note({id: 2, title: ‘周六参加朋友的婚礼‘});
var note3 = new Note({id: 3, title: ‘晚上回家洗尿布‘});

var noteCollection = new NoteCollection([note1, note2, note3]);
var noteCollectionView = new NoteCollectionView({collection: noteCollection});

  

时间: 2024-10-19 18:12:50

backbone点滴的相关文章

Backbone学习日记[2]:后台(php)接收前端数据并保存

一.前端定义一个模型,设置一个url,指向提供保存数据功能的后台文件,给模型设置一个默认值:实例化模型,调用save方法: <script type="text/javascript" src="jquery.min.full.js"></script> <script type="text/javascript" src="Underscore.js"></script> &l

用backbone实现的一个MVC的小demo

一.Apache配置 本实例需要使用php支持.要现在Apache中配置虚拟目录,在Apache下的httpd-vhosts.conf文件中添加如下代码 <VirtualHost *:80> DocumentRoot "D:/htdocs/backbone_demo" ServerName www.backbonedemo.cn </VirtualHost> 在windows的hosts文件中添加配置,hosts文件的位置在c:\windows\system32

Backbone笔记(续)

Backbone Bockbone 总览 Backbone 与 MVC 模式:解决某一类问题的通用方案 - 套路 MVC:一种架构模式,解耦代码,分离关注点 M(Model) - 数据模型 V(View) - 表现视图 C(Controller) - 控制器 Backbone 与 SPA 传统web应用与 SPA 的区别: 状态概念代替了页面概念 http://www.example.com/page1 http://www.example.com/page2 http://www.exampl

浅谈HTML5单页面架构(二)——backbone + requirejs + zepto + underscore

本文转载自:http://www.cnblogs.com/kenkofox/p/4648472.html 上一篇<浅谈HTML5单页面架构(一)——requirejs + angular + angular-route>探讨了angular+requirejs的一个简单架构,这一篇继续来看看backbone如何跟requirejs结合. 相同地,项目架构好与坏不是说用了多少牛逼的框架,而是怎么合理利用框架,让项目开发更流畅,代码更容易管理.那么带着这个目的,我们来继续探讨backbone. 首

暴力分析backbone.js(4)

写完了上一节后,突然发现我一开始都(从上往下分析)构思,不合理. 来看几张图 在看看backbone的api结构. 给大家看这些的原因,也是我一个分析的思路.我会先把源码里的8大块划分出来,大概的略过一遍,然后在独个独个的把小功能讲解一边. 当然除了公开的功能,还少不了私有的功能. 看完了这些是不是可以发挥想象力,如果让我们来写这个东西会怎么写? 1 var backbone = { 2 events : { 3 }, 4 5 model : { 6 }, 7 8 collection : {

TodoMVC中的Backbone+marionetteJS+requireJS例子源码分析之一

Marionette牵线木偶,Backbone是脊骨的意思,Marionette是基于Backbone做扩展库,可以理解为把脊骨骨架绑线扯着变成牵线木偶动起来哈哈,使backbone更易使用呵呵! 构建或者扩展了很多新的东西,如:Application,Region,ItemView,CollectionView,CompositeView,LayoutView,AppRoute,Controller等等,把很多重复性的工作变成配置,程序入口引入了集中处理器Application,貌似Mario

Django+Tastypie作后端,RequireJS+Backbone作前端的TodoMVC

一.配置好环境 接着前一篇的例子,顺带测试一下已下载下来example里面的backbone_require的例子 注意:直接本地用backbone.localStorage插件运行TodoMVC会报错,因为RequireJS工作时,加载js文件及template文件是异步加载,这就好比ajax异步请求需要涉及到跨域的问题,文件必须要在同一下域下才能被异步加载. 因此,直接把所有文件放到上篇文件的static(E:\project\tastypie\mysite\blog\static)目录下,

Tastypie与Backbone交互

上回玩到Tastypie与jQuery交互,那么现在接着玩玩Tastypie与Backbone.js交互 先把上篇的template文件:D:\project\tastypie\mysite\blog\templates\blog\index.html改改,添加了backbone的相关依赖文件,代码如下[增.删.改.查]: 一.GET id为1的blog文章出来: <!DOCTYPE html> <html lang="en" xmlns="http://w

Backbone入门讲解

Backbone是一个实现了web前端mvc模式的js框架. 一种解决问题的通用方法,我们叫做模式. 设计模式:工厂模式,适配器模式,观察者模式等,推荐js设计模式这本书.设计模式是一种思想. 框架模式:MVC,MVP,MVVM等.框架模式是开发项目的一种方案. MVC指的是什么?M:model(模型),V:view(视图),C:controller(控制器) MVC模式的思想,把模型和视图分离,通过控制器来连接它们. 这些模块是怎么实现mvc的呢? Events模块是事件模块,其他模块都继承了