JavaScript  »  Articoli  »  Ext.js 

Ext JS: la classe Ext.Element per un DOM più comprensibile

di: Alberto Bottarini     22 Febbraio 2010

Ext.CompositeElement e Ext.CompositeElementLite

L'ultimo strumento esposto dal framework per manipolare la pagina è rappresentato dalle due classi Ext.CompositeElement e Ext.CompositeElementLite. La differenza tra le due classi è lieve: il componente lite semplicemente presenta un numero di metodi inferiori e deve essere utilizzato a meno di richieste particolari che necessitano uno dei metodi presenti in Ext.CompositeElement.

Un CompositeElement rappresenta un elenco di Ext.Element che appartengono ad uno stesso gruppo concettuale e che devono essere trattati come un'unica entità. Grazie ad essi possiamo invocare qualsiasi metodo esposto da Ext.Element e Ext.Fx non su un unico oggetto ma su una collezione di Ext.Element. Oltre a questi metodi “ereditati” queste due classi presentano metodi per alterare la composizione interna degli elementi dando la possibilità al programmatore di aggiungere e rimuovere elementi.

Il miglior modo per ottenere un CompositeElement è l'utilizzo del metodo statico Ext.Element.select (o il suo alias Ext.select) passando come parametro principale un selettore CSS sotto forma di stringa.

Ecco un breve esempio chiarificatore:

<html>
<head>
<script src="../ext-base.js" type="text/javascript"></script>
<script src="../ext-all-debug.js" type="text/javascript"></script>
<link rel="stylesheet" href="../css/ext-all.css"></link>
<script type="text/javascript">
Ext.onReady(function() {
	var allComponent = Ext.select("div");
	allComponent.setWidth(400);
	allComponent.setHeight(100);
	allComponent.hover(function() {
		//nel caso di CompositeElement lo scope non è l'Ext.Element ma l'oggetto HTML
		//usiamo Ext.fly per ottenere l'Ext.Element
		Ext.fly(this).setWidth(700, true);
	}, function() {
		Ext.fly(this).setWidth(400, true);
	});
	//utilizzo la direttiva even per ottenere i div "pari"
	Ext.select("div:even").setStyle("backgroundColor","lightblue");
	//utilizzo la direttiva odd per ottenere i div "dispari"
	Ext.select("div:odd").setStyle("backgroundColor","darkblue");
});
</script>
</head>
<body>
<div></div>
<div></div>
<div></div>
<div></div>
</body>

Grazie ai CompositeElement è possibile ottenere effetti complessi con davvero poche righe di codice.

Per approfondire il meccanismo di selezione di elementi DOM partendo da un selettore CSS e scoprire tutti gli strumenti offerti consiglio la lettura della documentazione della classe Ext.DomQuery.

Tutti gli esempi visti nell'articolo sono disponibili per il download.

Conclusioni

Nonostante l'argomento trattato in questo articolo sia ancora abbastanza astratto per un framework ad alto livello come ExtJS, è necessario, prima di approfondire componenti grafici più complessi, comprendere i meccanismi interni per sapere dove intervenire sia per un utilizzo base della libreria sia per eventuali estensioni che potrebbero essere necessarie durante lo sviluppo di un processo di una certa entità.

Nel prossimo articolo introdurremo un concetto più ad alto livello che permetterà di definire template riutilizzabili nelle nostre applicazioni.

Guide JavaScript

Guida Node.js

Il framework che permette di per usare V8, l'interprete JavaScript...

Canvas, guida ai framework

Canvas, tra gli elementi di HTML5 è forse quello di maggior impatto....

Guida jQuery UI

Creare siti ricchi e dinamici con jQuery UI, il progetto ufficiale...

Altre guide

Newsletter @JavaScript

Ogni martedì, direttamente nella tua e-mail: guide, articoli, script, novità e approfondimenti tecnici su JavaScript.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Webmaster base

18 Giugno 2012 a Milano
Disponibilità: 6 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso JQuery e Ajax per Webmaster

03 Luglio 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti

Corso Webmaster base

11 Giugno 2012 a Roma
Disponibilità: 7 Posti