Imaginons une application simple: la gestion des utilisateurs. Dans la vue principale, nous avons une liste d'utilisateurs dans une grille; La sélection d'un utilisateur permettra le bouton "Modifier". Nous saisissons la ligne sélectionnée dans la grille (en utilisant le bind {selection : 'selectedUser';}
puis on passe ceci à la vue 'Edit': Ext.create('viewName', {viewModel:{data : selectedUser}});
Maintenant, dans les termes les plus simples, le modèle «utilisateur» comporte un «nom» et un «langage». Le formulaire d'édition contiendra une zone de texte pour «nom» et une zone de dialogue pour le langage. Cette combobox est liée à un magasin contenant toutes les langues avec 'langId' et 'langName' comme champs:
xtype: 'combobox', displayField: 'langName', valueField: 'langId', bind: { store: '{allLangs}', value: '{allLangs.langId}', selection: '{selectedLang}' }.
De plus, le formulaire "Modifier" aura le lien textBox au nom de l'utilisateur sélectionné:
bind : {value : '{selectedUser.Name}'}
Maintenant, sur l'événement afterRender
, je afterRender
la valeur de langName
partir de selecteUser
comme valeur sélectionnée de la combobox:
var displayValue = viewModel.get('selectedUser').get('langName'); langCombo.setValue(displayValue);
OK maintenant, comment pouvez-vous savoir si l'enregistrement actuel ('selectedUser') a changé la langue? Si je vérifie la propriété model.dirty
est toujours false
même si la valeur de la langue n'est pas la même que celle initialement. Comment puis-je lier la combobox afin de définir la propriété dirty
du modèle sur true
lorsque la valeur sélectionnée a été modifiée?
Évidemment, si je modifie le name
le modèle aura la propriété dirty
.
Merci d'avance.