.has - ilgilenio/Otag GitHub Wiki
.has( ÖgeBağları Nesne )
let Bağ={
ad:'a.ad'.init(), //Öge <a class="ad"></a>
soy:'a.soy'.init() //Öge <a class="soy"></a>
}
Bağ nesnesi değer olarak Ögeleri içeren açarlardan oluşan, bildiğimiz JavaScript Nesnesi 'dir.
.has yöntemi bağ nesnesinde tanımlanan nesneler ile yöntemin uygulandığı nesne arasında ilişki kurar. İlişki kurmadan eklemek için .layout yöntemini tercih edin.
let Ata='Ata'.has({
ufak:'Çocuk'.init(),
iri:'Çocuk'.init()
});
O.ready.then(b=>b.append(Ata)); //Sayfaya ekle
Yukarıda yapılan işlem aşağıdaki HTML çıktısını üretir
<div class="Ata">
<div class="Çocuk"></div>
<div class="Çocuk"></div>
</div>
JavaScript dilinde bulunan .children ( Ata.children ) işlevi sayfa dışında çalışmadığı için kullanışsızdır. .has yöntemiyle ise; Ata Ögesi sayfada bulunmasa bile Çocuklara erişilebilir.
let Ata='Ata'.has({
ufak:'#ufak.Çocuk'.init(),
iri:'#iri.Çocuk'.init()
});
Ata.View.ufak //<div id="ufak" class="Çocuk"></div> // sayfaya eklemeden erişebiliyoruz
Ata.View.ufak.parent //<div class="Ata"></div> // çocuktan Ata'ya da bağ var
Ata.children[0] // X ÇALIŞMAZ X
Ata.View.ufak.parentElement // X ÇALIŞMAZ X
O.ready.then(b=>b.append(Ata)); //Sayfaya ekle
Ögenin alt ögeleri arttıkça ve nesne derinleştikçe erişim zorlaşacağı daha kısa bir yazım amacıyla .V yöntemi tasarlanmıştır.
let UralAltay='DilAilesi'.has({
Altay:'Altay Kolu'.has({
Türk:'Türk Dilleri'.has({
Oğuz:'Oğuz Takımı'.has({
Türkiye:'Türkiye Türkçesi Dili'
}),
}),
Moğol:'Moğol Dilleri',
Tunguz:'Tunguz Dilleri'
})
Ural:'Ural Kolu'.has({
Fin:'Fin Dili',
Eston:'Estonca Dili',
Macar:'Macarca Dili'
})
});
UralAltay.View.Altay.View.Türk.View.Oğuz.View.Türkiye;
// <div class="Türiye Türkçesi Dili"></div>
UralAltay.V('Altay:Türk:Oğuz:Türkiye');
// <div class="Türiye Türkçesi Dili"></div>
O.ready.then(b=>b.append(UralAltay)); //Sayfaya ekle
Bağ nesnesinde sadece öge oluşturuyor ve üzerinde işlem yapmıyorsanız ( .prop vs. gibi ) .init yazmanıza gerek yoktur. Yöntem; verdiğiniz Yazı değeriyle Öge oluşturur.
let Ata='Ata'.has({
ufak:'Çocuk', // .init() yazmamıza gerek yok
iri:'Çocuk' //
});
O.ready.then(b=>b.append(Ata)); //Sayfaya ekle
Otağ Felsefesinde Ögeler Verilerin görsel Modelleri olduklarından belirli verilere sahip olmaları, değer atandıkları zaman bu değere göre kendini güncellemesi beklenir. Öge .val komutu ile .has ile bağlanan alt ögelerin değerine erişmeyi sağlar
let Özellik={
onkeyup:function(){
console.log(this.parent.val); // {ad:'..',soyad:'..'}
}
}
let Düzenle='Düzenle'.has({
ad:'input.ad'.prop(Özellik),
soy:'input.soy'.prop(Özellik)
});
Düzenle.val //{ad:'',soyad:''}
O.ready.then(b=>b.append(Düzenle)); //Sayfaya ekle
Örnekteki yiv; ad ve soy girişleri değiştikçe Düzenle Ögesinin değerini söylüyor.
Bir alt ögenin veri karşılığında gözükmesini engellemek için başına _ konulabilir.
let Düzenle='Düzenle'.has({
ad:'input.ad'.prop(Özellik),
soy:'input.soy'.prop(Özellik),
_kayıt:'input[type="button"]' // _ ile veride gözükmesini engelledik
.set('Kaydet')
});
Düzenle.View.kayıt // <input type="button"/> // Öge erişilebilir
Düzenle.val // {ad:'',soyad:''} // Veride gözükmedi
O.ready.then(b=>b.append(Düzenle)); //Sayfaya ekle