2011-10-24 5 views
1

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

Répondre

1

Avez-vous essayé:

identity.getProfile({ 
    success:function(profile, operation){ 
    }, 
    failure: function(profile, operation){ 
     //check for a failure 
    } 
}); 

Je voudrais aussi essayer de retirer la propriété associatedName.

+0

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é. –

+0

Puis-je voir votre configuration proxy? –

+0

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. –

Questions connexes