2012年2月6日 星期一

Backbone.js Model 01︰用途與特性

1.當作一般資料儲存物件
當Client端要使用變數來暫存,可以把變數存在Model物件內,把Model當作一般物件般,做資料儲存

一般物件儲存
 var obj={  
      x:123,  
      y:456 
 }  
 console.log('obj x='+obj.x);  

Model物件儲存
 var model=new Backbone.Model({  
      x:123,  
      y:456  
 })   
 console.log('model x='+model.get('x'));  

2.可自行與Server溝通取得資料
Model本身內建fetch,save等method,只要設定好相關參數(url)Model即可自行與Server溝通取得資料,
也就是當由Server取得資料暫存在Client時,會將取得的資料以Model物件方式儲存在Client上

 var Item=Backbone.Model.extend({  
   url:function(){  
    return "json_sample/playerInfo.json?id="+this.get("id");  
   }  
 });  
 var item=new Item();  
 item.fetch();//執行fetch後,就會自動由server取得資料並存在這個item內  

3.可被監聽
Model內存有多個屬性變數,可以在View上,指定監聽Model的特定屬性,只要當Model的該屬性內容發生變化,View內設定的function即會被觸發執行

 var model=new Backbone.Model({  
      x:123,  
      y:456  
 })   
 var myModel=new Backbone.Model({  
      x:123,  
      y:456  
 })       
 var view=new Backbone.View({  
   model:myModel,  
   initialize:function(){  
      model.on('change:x',this.onChangeHandler)  
   },  
   onChangeHandler:function(){  
   }  
 })  
4.使用模式
我們通常可以將App的Status變化,以不同的變數儲存在model內,然後讓需要因為App Status變化,而有需要改變的View監聽這個model,即可讓App內的View可以自動依照status狀態不同而改變,在這樣狀況下使用的model不需要與Server溝通,只是把model當作變數物件使用,再利用model可以被監聽的特性來使用。

model也會被當作由Server端取得資料後,要儲存在Client上的最小儲存單位。
當由Server上取得多筆的資料,每一筆資料都會用model物件型態來儲存,所有的model再放到collection內來儲存,client端的程式就操作這collection即可。

沒有留言: