IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ext JS / Sencha Discussion :

Message d'erreur : 'Uncaught TypeError: Cannot read property 'internalId' of undefined'


Sujet :

Ext JS / Sencha

  1. #1
    Membre confirmé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Points : 559
    Points
    559
    Par défaut Message d'erreur : 'Uncaught TypeError: Cannot read property 'internalId' of undefined'
    Bonjour a tous
    Je ne sais pas d'ou viens cette erreur : n'i c'est quoi la signification?
    Uncaught TypeError: Cannot read property 'internalId' of undefined
    Voila le bout de code qui la run:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
        var FuzzyStore = Ext.getStore('FuzzyStore');
        var globaltab = Ext.getCmp('globaltab');
        var countRecord = Ext.getStore('CountRecord');
     
        if (titre != "-> Jeux de paramètres")
        { FuzzyStore.removeAll(); var i = 0; } else var i = FuzzyStore.getCount();
        var gridId = i;
     
        var countTrouverInstancesDuneClasse = 0;
        countRecord.getProxy().url = rootUrl + "Mesure/trouverInstancesDuneClasse/count/"+ typeDeClasse;
        countRecord.load({
            callback: function (records, operation, success) {
                if (success) {
                    console.log("OK for Get. CountRecord."); 
                    countTrouverInstancesDuneClasse = 500;
                }
            }
        });
     
        FuzzyStore.getProxy().url = rootUrl + "Mesure/trouverInstancesDuneClasse/"+ typeDeClasse;
        FuzzyStore.load(
                    {addRecords: true,
                    callback: function (records, operation, success) {
                        if (success) {.....  // ici que j'ai le message d'erreur (avant j'ajoute le store plus haut cela n'existé pas comme erreur)

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    cela signifie que tu essais d'accéder à la propriété
    internalId d'un objet qui n'existe pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var i;
    console.log(i); // undefined
    console.log(i.internalId); // undefined
    => Uncaught TypeError: Cannot read property 'internalId' of undefined
    A+JYT

  3. #3
    Membre confirmé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Points : 559
    Points
    559
    Par défaut
    Ok merci de plus je remarque que l'erreur viens de mon :
    countRecord.load();
    ci-dessous mon proxy et store, Mais je voix pas d'ou l'erreur peu venir ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Ext.define('MyApp.model.CountRecord', {
        extend: 'Ext.data.Model',
     
        fields: [{name : 'count'}]
     
    });
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Ext.define('MyApp.store.CountRecord', {
        extend: 'Ext.data.Store',
        requires: [
            'MyApp.model.CountRecord'
        ],
     
        autoLoad: false,
        constructor: function(cfg) {
            var me = this;
            cfg = cfg || {};
            me.callParent([Ext.apply({
                autoLoad: false,
                model: 'MyApp.model.CountRecord',
                storeId: 'CountRecord',
     
                proxy: {
                    type: 'rest',
                    noCache: false,
                    url: '../APIRest/service/Mesure/trouverInstancesDuneClasse/count/1',
                    appendId: false
                }
            }, cfg)]);
        }
     
    });
    Merci d'avance

  4. #4
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Là c'est moi qui comprends pas

    En général on défini un store avec un modèle qui fixe les champs du store.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Ext.define('AM.model.User', {
        extend: 'Ext.data.Model',
        fields: ['name', 'email']
    });
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Ext.define('AM.store.Users', {
        extend: 'Ext.data.Store',
        model: 'AM.model.User',
        autoLoad: true,
        listeners: {
            load: {
                fn: function() {
                }
            }
        },
     
        proxy: {
            type: 'ajax',
            api: {
                read: 'data/users.json',
                update: 'data/updateUsers.json'
            },
            reader: {
                type: 'json',
                root: 'users', //nom de la propriété de la réponse contenant le tableau de donnée
                successProperty: 'success' //propriété indiquant au reader que la recherche sur le serveur c'est bien passé et qu'il peut donc lire les données
            }
        }
    });
    le contenu de la réponse du serveur doit être quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    {
        success: true, //propriété indiquant au reader que la recherche sur le serveur c'est bien passé et qu'il peut donc lire les données
        count: 10, //nombre d'éléments dans la base (utilisé dans la pagination ici page de deux élément parmi 10
        users: [ //nom de la propriété de la réponse contenant le tableau de donnée
            {id: 1, name: 'Ed',    email: 'ed@sencha.com'},
            {id: 2, name: 'Tommy', email: 'tommy@sencha.com'}
        ]
    }
    si tu utilise la autoload : false
    un simple Ext.getStore('FuzzyStore').load(); suffit.

    si tu veux qu'une fonction soit exécuté à chaque fois que le datastore est chargé tu as dans la définition du store
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        listeners: {
            load: {
                fn: function() {
                }
            }
        },
    le listener load sera exécuté à chaque chargement.

    je conseil de faire le travail en deux étapes
    d'abord la partie extjs
    en utilisant des url vers des fichiers JSON comme dans mon exemple.
    il suffit de mettre des fichiers json sur le serveur dans le dossier data pour faire fonctionner le tout

    ensuite s'occuper côté serveur de la partie dynamique.
    pour chaque fichier JSON qu'on a mis sur le serveur créer une url php jsp java asp etc
    qui doit retourner exactement la même structure que celle définie dans le fichier JSON
    pour ça pas besoin d'extjs il suffit d'ouvrir les url en question via le navigateur

    lorsque toutes les url dynamique retourne des données conforme aux fichier JSON
    remplacer dans le code ExtJS les urls data/fichier.json par l'url dynamique correspondante.

    Sur les gros dev j'utilise cette méthode de la façon suivant
    suite aux specs définition des données qui seront échangé entre ExtJS et le serveur
    constitution de deux équipes : serveur et client

    l'équipe serveur ne s'occupe que du serveur et ne produit aucun élément d'affichage
    l'équipe client ne s'occupe que de la partie interaction avec l'utilisateur et ne s'occupe pas du serveur
    à la fin branchement des deux.

    A+JYT

Discussions similaires

  1. [V8] Importation csv Error Cannot read property '1' of undefined
    Par vernetk dans le forum Odoo (ex-OpenERP)
    Réponses: 1
    Dernier message: 11/02/2015, 17h36
  2. Réponses: 15
    Dernier message: 15/06/2013, 02h11
  3. sous Chrome TypeError: Cannot read property 'style' of null 7
    Par cfabc dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 03/08/2010, 13h14
  4. Message d`erreur " error:cannot read : src/main/org/pache/tools/bzip2/*.java "
    Par wiss20000 dans le forum RedHat / CentOS / Fedora
    Réponses: 0
    Dernier message: 09/11/2007, 16h36
  5. Message d'erreur: Cannot find file ID 2
    Par glanumf dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 25/05/2007, 17h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo