requirejs.config({ baseUrl: 'js/lib', paths:{ app: '../app' } }) // Start the main app logic. //requirejs===define===require源码:var requirejs, require, define; requirejs(['jquery', 'underscore', 'backbone_1.2.3'], function ($, _, Backbone) { var Book = Backbone.Model.extend( { defaults:{ name:"unknnown", author:"unknown&", price:0 }, validate:function(data){ if(data.price>100){ return "大于100了"; } } } ); /*function Book(){ this.defaults = 上面那个 }*/ var javabook = new Book({ name:"thinking in java" }) // 监听模型"change"事件 javabook.on('change', function(model) { //console.log('change事件被触发'); }); // 监听"change:price"事件 /*previous()方法接收一个属性名,并返回该属性在修改之前的状态; previousAttributes()方法返回一个对象,该对象包含上一个状态的所有数据。 需要注意的是,previous()和previousAttributes()方法只能在数据修改过程中调用 (即在模型的change事件和属性事件中调用)*/ javabook.on('change:price', function(model, value) { var price = model.previous('price'); if(price < value) { console.log('价格上涨了' + (value - price) + '元.'); } else if(price > value) { console.log('价格下降了' + (value - price) + '元.'); } else { console.log('价格没有发生变化.'); } }); // 监听error事件,当验证失败时触发 javabook.on('invalid', function(model, error) { console.log(error); }); // 通过set方法设置模型数据 javabook.set('name', 'Java7入门经典'); javabook.set('author', 'Ivor Horton'); javabook.set('price', 883,{ validate:true //silent : true不校验 }); /*unset()方法用于删除对象中指定的属性和数据 clear()方法用于删除模型中所有的属性和数据*/ javabook.clear(); var name = javabook.get("name"); var author = javabook.escape("author"); console.log(javabook); console.log(name); console.log(author); } );
http://yujianshenbing.iteye.com/blog/1748571