Sencha Touch / ExtJS: comment faire pour stocker une variable pour l'utiliser plus tard?
Est-il possible pour une méthode dans une classe pour stocker une valeur qu'une autre méthode peut l'utiliser plus tard?
Par exemple, voici un extrait de l'un de mes Ext.Panneau de cas:
app.views.EstablishmentDetail = Ext.extend(Ext.Panel, {
dockedItems: [{
xtype: 'toolbar',
title: 'View establishment',
items: [
{
text: 'Back',
ui: 'back',
listeners: {
'tap': function () {
Ext.dispatch({
controller: app.controllers.establishments,
action: 'index',
animation: {type:'slide', direction:'right'}
});
}
}
},
{xtype:'spacer'},
{
id: 'Map',
text: 'Map',
ui: 'action',
listeners: {
'tap': function () {
Ext.dispatch({
controller: app.controllers.establishments,
action: 'showMap',
id: this.record.getId(),
data: this.record.data,
record: this.record
});
}
}
}
]
}],
styleHtmlContent:true,
scroll: 'vertical',
J'aimerais avoir une variable dans cette classe, appelée 'mavariable' que je peux passer à une propriété dans le répartiteur vous voyez ci-dessus, "showMap'. (Je tiens à initialiser la valeur d'un autre appel de la méthode.)
Mais dans tous les exemples que j'ai vu sur ExtJS, lorsque vous sous-classe quelque chose comme Ext.Panneau, il semble qu'on ne peut que se référer à des propriétés (comme le "titre") ou de créer de nouvelles fonctions. Est-il un mécanisme pour l'enregistrement d'une variable lors d'un appel de méthode, l'utilisation de cette variable dans une méthode différente?
Vous devez vous connecter pour publier un commentaire.
Oui, vous pouvez ajouter des propriétés à une sous-classe. La seule chose la plus délicate sur le partage de données entre les méthodes que vous êtes en train de faire est que le pointeur this fait référence à l'élément, et non à la sous-classe.
Je pense que la chose la plus facile à faire est de remplacer le initComponent méthode de sorte que vous pouvez utiliser des fermetures de partager des variables entre vos gestionnaires, par exemple:
À mon humble avis, chaque fois que vous utilisez le pointeur this dans votre sous-classe, ça va être moins compliqué si vous déplacez votre code en initComponent et l'utilisation de fermetures. Vous n'avez pas à, mais ensuite, vous auriez à déplacer vers le haut/vers le bas le parent/enfant composant de la chaîne.
Espère que cette aide
Une belle façon de mettre les varibles de la classe est l'aide de l'Ext.appliquer la méthode.
La raison pour laquelle la varible n'existait pas dans l'Envoi appel, c'est qu'il n'est pas dans le bon champ. L'étendue par défaut de la fonction d'écoute sera dans ce cas la barre d'outils. Vous devez définir le champ d'application du présent sur l'auditeur.
Pour répondre à votre question, vous pouvez faire quelque chose comme ceci :
...
Il existe de nombreux moyens valables de l'aide de l'objet de ports d'écoute et c'est l'un d'entre eux. Je préfère utiliser la méthode addListener.