J'ai deux modèles: "Identité" et "Profil". L'identité "appartient à" le profil. Quand je reçois un enregistrement de type 'identité', je veux (par cet enregistrement) obtenir le profil correspondant. J'essaie en utilisant le code suivant:Appartient à ExtJS Modèle
Ext.define('App.model.Identity', {
extend: 'Ext.data.Model',
fields: [
// ...
{name: 'id_profile', type: 'int'},
// ...
],
belongsTo: {
model: 'App.model.Profile',
primaryKey: 'id',
foreignKey: 'id_profile',
associatedName: 'Profile'
},
proxy: {
type: 'ajax',
api: {
read: App.Config.getBaseUrl() + '/admin_identity/list',
create: App.Config.getBaseUrl() + '/admin_identity/create',
update: App.Config.getBaseUrl() + '/admin_identity/update',
destroy: App.Config.getBaseUrl() + '/admin_identity/destroy'
},
reader: {
type: 'json',
root: 'data'
}
}
});
Ext.define('App.model.Profile', {
extend: 'Ext.data.Model',
fields: [
{name: 'id', type: 'int'},
// ...
],
belongsTo: {
model: 'App.model.Identity',
primaryKey: 'id',
foreignKey: 'id_profile',
name: 'identities'
},
proxy: {
// ...
}
});
Lorsque je tente de le faire:
function viewProfile(identity) {
identity.getProfile(function(profile){
console.log(profile);
});
}
Ce que je reçois est l'objet d'un profil vide. La chose étrange est que la classe Identity n'a fait aucune demande http pour obtenir le profil. Je fais ça bien?
Merci à l'avance
La propriété associatedName est utilisée pour générer les getters et setters. De cette façon, je peux appeler 'modelObject.getProfile' (à l'origine, je dois appeler get {modelname}). La solution que vous avez proposée n'a pas fonctionné. Le rappel n'est pas appelé. –
Puis-je voir votre configuration proxy? –
est ici. J'ai ajouté à la question seulement pour le modèle d'identité, le modèle de profil a presque le même proxy. App .. baseUrl est une fonction déjà définie, juste pour m'aider avec les URL. –