Vous pouvez toujours utiliser l'ancienne syntaxe new ClassName() dans Ext 4, mais il est préférable d'utiliser la nouvelle fonction Ext.define pour définir de nouvelles classes. En définissant les classes cette façon, toutes les caractéristiques de classe ajoutés dans les sections suivantes sont activés. Le mot-clé new fonctionne toujours, mais sans ces avantages.
Un avantage supplémentaire d'utiliser Ext.define est qu'il va automatiquement détecter et de créer des nouveaux espaces de noms nécessaire.
Voici un exemple simple de l'ancienne et de la nouvelle syntaxe pour lesquelles vous définissez une classe personnalisée qui étend un composant existant ExtJS :
// ExtJS 3:
Ext.ns('MyApp');
MyApp.CustomerPanel = Ext.extend(Ext.Panel, {
// etc.
});
// ExtJs 4
Ext.define('MyApp.CustomerPanel', {
extend: 'Ext.panel.Panel',
// etc.
});
ExtJs 4 inclut désormais un solide système de chargement dynamique de classe qui assure également la gestion intégrée de dépendance. Encore une fois, cette fonctionnalité est facultative, mais fournit un couple de grands avantages:
Ce chargement dynamique est activé en utilisant simplement Ext.define et en définissant les dépendances dans le code en utilisant deux propriétés nouvelle classe:
Il s'agit d'une nouvelle approche pour ajouter des fonctionnalités personnalisées dans des classes existantes. Ceci est similaire à l'actuel fonction Ext.override , même si elle ne remplace pas les méthodes existantes comme le fait override, elle augmente simplement le prototype de ce qui est nouveau. exemple de syntaxe:
Ext.define('Sample.Musician', {
extend: 'Sample.Person',
mixins: {
guitar: 'Sample.ability.CanPlayGuitar',
compose: 'Sample.ability.CanComposeSongs',
sing: 'Sample.ability.CanSing'
}
});
N'importe quelle classe peut maintenant définir des méthodes statiques tout simplement en les définissant dans sa propriété de classe statics.
En ExtJs3, nous utilisons le terme config pour désigner toutes les propriétés dans un prototype de classe qui, peut être configurer par le code appelant. Bien que cela soit encore vrai dans ExtJs 4, la nouveauté est que lorsque les propriétés de configuration sont spécifié avec cette config , il génère automatiquement un getter, setter, reset et apply. Par exemple, étant donné ce code:
Ext.define ('MyClass', {config: {title: "Titre par défaut '}});
... Les méthodes suivantes sont générées automatiquement dans les coulisses:
title: 'Default Title',
getTitle: function() {
return this.title;
},
resetTitle: function() {
this.setTitle('Default Title');
},
setTitle: function(newTitle) {
this.title = this.applyTitle(newTitle) || newTitle;
},
applyTitle: function(newTitle) {
// custom code here
// e.g. Ext.get('titleEl').update(newTitle);
}