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/1748571java