2012-03-21 6 views
1

Bonjour J'essaie de charger un fichier JSON local dans Sencha Touch 2. J'utilise Phonegap 1.4 et iOS 5, testant dans VM.Impossible de charger le fichier JSON

Voici le code:

Ext.define("User", { 
       extend: 'Ext.data.Model', 
       config: { 
       fields: [ 
          'id', 'name' 
          ], 

       hasMany: {model: 'Order', name: 'orders'}, 

       proxy: { 
        type: 'ajax', 
        url : 'users.json', 
        reader: { 
         type: 'json', 
         root: 'users' 
        } 
       } 
       } 
       }); 

     Ext.define("Order", { 
       extend: 'Ext.data.Model', 
       config: { 
       fields: [ 
          'id', 'total' 
          ], 

       hasMany : {model: 'OrderItem', name: 'orderItems', associationKey: 'order_items'}, 
       belongsTo: 'User' 
       } 
       }); 

     Ext.define("OrderItem", { 
       extend: 'Ext.data.Model', 
       config: { 
       fields: [ 
          'id', 'price', 'quantity', 'order_id', 'product_id' 
          ], 

       belongsTo: ['Order', {model: 'Product', associationKey: 'product'}] 
       } 
       }); 

     Ext.define("Product", { 
       extend: 'Ext.data.Model', 
       fields: [ 
          'id', 'name' 
          ], 

       hasMany: 'OrderItem' 
       }); 
     var store = Ext.create('Ext.data.Store', { 
          model: "User"    
     }); 


     store.load({ 
       callback: function() { 
       //the user that was loaded 
       var user = store.first(); 

       //console.log("Orders for " + user.get('name') + ":") 
       alert(user.get('name')); 

       //iterate over the Orders for each User 
       user.orders().each(function(order) { 
            console.log("Order ID: " + order.getId() + ", which contains items:"); 

            //iterate over the OrderItems for each Order 
            order.orderItems().each(function(orderItem) { 
                  //we know that the Product data is already loaded, so we can use the synchronous getProduct 
                  //usually, we would use the asynchronous version (see Ext.data.association.BelongsTo) 
                  var product = orderItem.getProduct(); 


                  }); 
            }); 
       } 
       }); 

Le fichier JSON:

{ 
"users": [ 
      { 
      "id": 123, 
      "name": "Ed", 
      "orders": [ 
        { 
        "id": 50, 
        "total": 100, 
        "order_items": [ 
            { 
            "id"  : 20, 
            "price" : 40, 
            "quantity": 2, 
            "product" : { 
            "id": 1000, 
            "name": "MacBook Pro" 
            } 
            }, 
            { 
            "id"  : 21, 
            "price" : 20, 
            "quantity": 3, 
            "product" : { 
            "id": 1001, 
            "name": "iPhone" 
            } 
            } 
            ] 
        } 
        ] 
      } 
      ] 
} 

L'alerte dit 'non défini', toute aide? Merci beaucoup

+0

Pouvez-vous voir si le JSON est en train d'être récupéré? Si vous pouvez tester dans le navigateur, puis regardez l'onglet réseau pour voir – sissonb

+0

J'essaie de le tester sur mon serveur web. Peut prendre un moment. – Ricardo

+0

Et si le JSON n'est pas récupéré? Que pouvais-je faire alors? – Ricardo

Répondre

2

Dans Sencha Touch 2, l'objet lecteur doit utiliser rootProperty au lieu de root.

+0

Merci pour votre temps :) – Ricardo

Questions connexes