2012年2月9日 星期四

Backbone.js Model 03︰自訂Class與產生instance


一.自訂Model Class
自訂的Model Class一定要繼承自Backbone.Model,所產生的Model Class也可以再被繼承下去。
如果需要override一些Class屬性,則在宣告Class時傳進去。

var MyModelClass=Backbone.Model.extend(properties)
properties:想要overrde的Class屬性hash
例:
window.Item=Backbone.Model.extend({
    initialize:function(){
        this.set({url:"hi”})
    },
    defaults:{
        type:"rock"
    },
    my:"ozzy"
})
var item=new Item();
console.log(item.my) // “ozzy” Class Propery
console.log(item.get(“url”)) // “hi” attributes's property
console.log(item.get(“type”)) // “rock”

例:繼承自訂Model Class
window.MyItem=Item.extend({})

二.產生model instance
利用 new Model(prperties)產生instance
properties:所要傳入attributes內的屬性hash

instance可以改變attributes上的屬性值,也可自訂attributes上的prop,
可以改變model屬性值,但無法自訂model屬性值


window.MyModel=Backbone.Model.extend({
    initialize:function(){
        this.set("prop1",123)
    },
    my:'ozzy'
})
//--利用instance 設定與讀取class屬性
var model=new MyModel();
console.log(model.my)
model.my='sun';
console.log(model.my)
//--利用instance 設定與讀取class attributes的屬性
console.log(model.get('prop1'));
model.set("prop1",456);
console.log(model.get('prop1'));

三.自訂Class與產生instance時傳入的property
要設定initialize....等Class屬性一定要在宣告Class時設定進去
當然你也可以在設定initialize時,在initialize內設定attributes內的屬性內容

在產生model instance時,設定進去的則是attributes內的屬性值


沒有留言: