4.1 mise à JOUR:
Comme une mise à jour... en 4.1, il existe désormais une méthode statique setFields
qui peut être utilisé pour définir le modèle prototype de champs. Il fonctionne bien dans un contrôleur de la méthode init.
Quand j'ai fait cela, je voulais avoir quelques champs statiques définies dans le modèle de la classe et ensuite de fixer des plus dynamique. Malheureusement, le nouveau setFields
méthode remplace tous les domaines avec l'argument, c'était assez facile à gérer si.
Cet exemple utilise le modèle MVC où mon modèle et le magasin sont inclus dans le contrôleur model
tableau et store
tableau (me donnant la pratique des getters ci-dessous):
Ext.define('ST.controller.Main', {
extend: 'Ext.app.Controller',
models: ['User', 'Reference'],
stores: ['CurrentUser', 'PermissionRef'],
views: ['MainPanel'],
init: function() {
var me = this;
me.getPermissionRefStore().on('load', function(store, records) {
var model = me.getUserModel();
// this returns the static fields already defined
// in my User model class
fields = model.prototype.fields.getRange();
// add the permission options (dynamic fields) to the static fields
Ext.each(records, function(permission) {
fields.push({name: permission.get('name'), type: 'bool'});
});
// 4.1 method to update the User model fields
model.setFields(fields);
// now load the current user (it will use the updated model)
me.getCurrentUserStore().load();
});
}
});
L' User
modèle et CurrentUser
magasin sont créés exactement comme des non-dynamique des modèles et des magasins et inclus dans leur contrôleur de tableaux, l '"Utilisateur" modèle est tout simplement absent de la dynamique des champs qui sont ajoutés comme indiqué ci-dessus.