ExtJs Model hakkında

Standard

Javascript’te ExtJs kullanırken, veri nesnelerimizi tanımlamak için Model kullanabiliyoruz. Javada POJO’larla yaptığımız gibi. Bunun yapmak için Ext.data.Model ‘i genişletmek ve alanları tanımlamak yeterli. Aşağıda Ogrenci modelini tanımlayalım.

Ext.define("Tf.model.Ogrenci",
{
extend:"Ext.data.Model",
fields:[
{name:"isim", type:"string"},
{name:"yas", type:"int"}
]
}
);

İstersek Ogrenci sınıfımıza ihtiyacimiz olan metodları ( fonksiyonları ) da ekleyebiliriz. Aşağıda yaz() metodunu ekledik. Öğrenci bilgilerini gosteriyor.


Ext.define("Tf.model.Ogrenci",
{
extend:"Ext.data.Model",
fields:[
{name:"isim", type:"string"},
{name:"yas", type:"int"}
],

yaz: function(){
console.log("isim : " + this.get("isim") + " yas : " + this.get("yas") );
}
}
);

Ayrıca bu alanlar için validasyonlar da belirtebiliriz. Aşağıda isim alanı icin email ( anlamsiz ama olsun ) ve uzunluk kontrolleri ekledim.


Ext.define("Tf.model.Ogrenci",
{
extend:"Ext.data.Model",
fields:[
{name:"isim", type:"string"},
{name:"yas", type:"int"}
],

validations:[
{type:"length", field:"isim", min:3},
{type:"email", field:"isim" }
],

yaz: function(){
console.log("isim : " + this.get("isim") + " yas : " + this.get("yas") );
}
}
);

Bu şekilde tanımladığımız bu sınıfları nasıl kullanacağız peki. Öncelikle bu sınıfların nesnesini oluşturmak için birkaç yöntem var.

Ext.create ile:

og = Ext.create("Tf.model.Ogrenci", {isim:"mustafa"});

kendi create metodu ile ile:

o2 = Tf.model.Ogrenci.create({isim:"cevat", yas:33});

new ile ile:

o3 = new Tf.model.Ogrenci({isim:"asdaasd", yas:3322});

Artık ogrenci nesnemizi kullanabiliriz. Alanları değiştirmek için veya değerlerini almak icin get/set metodları var.

og.get("isim");
og.set("yas", 32);

gibi. ya da kendi tanimladigimiz metodu kullanabiliriz.

og.yaz();

Validasyon için de validate() metodu var. Eğer bir sorun varsa bize hata nesnesi döner. Dönen nesnenin icinde items dizisinde hataları gorebilirsiniz.

hata = og.validate()

Mesela isim icin “aa” girmis olsaydik bize iki hata donecekti. hata.items[] da bulabilirsiniz bunlari.

{ field="isim", message="is the wrong length"}
{ field="isim", message="is not a valid email address"}

Tabii ki bunun asıl kullanıldığı yer, proxy elemanı ile servera bağlanıp, dogrudan bu nesneleri veritabanına yazdırıp, yukleyip silebilme ( kendi load()/save()/destroy() metodları var. Bir anlamda Javascript içim ORM sayılır 😛 ) ve store ‘larda kullanarak, grid ve tree ‘leri kullanmak.

ORM dedim de tanımladıgınız modeller baska model tanımlarını iceriyorsa yada aralarinda iliskiler varsa bunlari da belirtebilirsiniz. Sinif modeli tanımlayıp, Sınıf n Ogrenci ye sahip olabilir diyebiliyorsunuz.

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s