「Model是js應用的核心,包括基礎的數據以及圍繞着這些數據的邏輯:數據轉換、驗證、屬性計算和訪問控制」。html
1、初始化方法jquery
咱們先來看一個demo,initialize,這是一個初始化方法,可是寫這段代碼以前,首先要在<head>元素中導入3個相應的庫文件,即jQuery框架、Backbone主框架和依賴庫Underscore。須要注意它們導入頁面的順序,因爲代碼是按照自上而下的順序進行執行的,所以先導入jQuery框架文件;Backbone依賴於Underscore庫,所以在導入Underscore庫文件後,才導入Backbone主框架文件。框架
好比說:函數
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>daomul for Axiba</title> 5 </head> 6 <body> 7 <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script> 8 <script src="js/underscore.js"></script> 9 <script src="js/backbone.js"></script> 10 <script> 11 12 (function($){ 13 //Backbone經過extend來擴展實例方法和靜態方法: 14 //initialize這個初始化方法,也稱構造函數。這個函數會在Model被實例化時調用。 15 var People = Backbone.Model.extend({ 16 initialize:function(){ 17 alert('hi , i am daomul!'); 18 } 19 }); 20 var person = new People; 21 })(jQuery); 22 23 </script> 24 </body> 25 </html>
2、defaults 和 對象賦值方法get 和 setthis
屬性在一個Model是以字典(或者相似字典)的方式存在的,設定默認值的方式,只不過是實現了Backbone的defaults這個方法,或者是給defaults進行了賦值。spa
1 (function($){ 2 3 var People = Backbone.Model.extend({ 4 initialize : function(){ 5 alert('come on !'); 6 }, 7 defaults:{ 8 name : ' daomul ', 9 age : ' 24 ' 10 } 11 }); 12 13 var person = new People; 14 15 //get獲取對象的值 16 alert(person.get('age')); 17 18 //set改變對象的值 19 person.set({phone:'134133',sex:'男'}); 20 alert(person.get('sex')); 21 22 })(jQuery);
3、對象中的自定義方法code
模型中的自定義方法,能夠發現是經過字典的方式來構造的,方法的調用也是能夠經過.語法來操做的。htm
1 (function($){ 2 3 var People = Backbone.Model.extend({ 4 initialize: function(){ 5 6 }, 7 defaults:{ 8 country : 'China' 9 }, 10 myPrivateMethod : function(){ 11 return 'I \'m from ' + this.get('country') + ' and my name \'s ' + this.get('name'); 12 } 13 }); 14 15 var person = new People; 16 person.set({name : 'Axiba'}); 17 alert(person.myPrivateMethod()); 18 19 })(jQuery);
4、綁定監聽對象中屬性的變化對象
經過this.bind綁定監聽對象中屬性值的變化,改變是經過change:name,也是字典的格式來定義的。blog
1 (function($){ 2 3 var People = Backbone.Model.extend({ 4 initialize:function(){ 5 alert('1'); 6 //綁定監聽 7 this.bind('change:name',function(){ 8 var name = this.get('name'); 9 alert('oh ,no u change my name to ' + name); 10 }); 11 }, 12 defaults : { 13 name : 'Axiba', 14 age : '100' 15 } 16 }); 17 18 var person = new People; 19 person.set({name : 'Axiba2'}); 20 21 })(jQuery);
5、驗證規則以及錯誤的提示
經過下面的demo能夠看出有三種方式能夠觸發值改變的驗證:
1 (function($){ 2 var People = Backbone.Model.extend({ 3 4 initialize:function(){ 5 this.bind("invalid",function(model,error){ 6 alert(error); 7 }); 8 }, 9 defaults:{ 10 name : 'Axiba', 11 age : 11 12 }, 13 validate:function(attributes){ 14 15 if(attributes.name == '') { 16 return "name不能爲空!"; 17 } 18 } 19 }); 20 21 var person = new People; 22 23 //方法1 :默認set時不進行驗證,save時觸發驗證。根據驗證規則,彈出錯誤提示。 24 //person.set({name : ''}); 25 //person.save(); 26 27 //方法2 :手動觸發驗證, set時會觸發 28 //person.set({name:''}, {'validate':true}); 29 30 //方法3 :添加錯誤處理也行 31 person.on('invalid', function(model, error){ 32 alert(error); 33 }); 34 person.set({name : ''}); 35 person.save(); 36 37 })(jQuery);*/