2011-04-26 20 views
15

Acabo de descargar la versión final de ExtJs 4 y estoy tratando de implementar algunas cosas utilizando el nuevo enfoque de Modelo.Cómo acceder a los modelos anidados de la tienda en ExtJs 4

Por ejemplo, tengo un modelo llamado SetupModel, tiene 2 modelos anidados Usuarios, Informes. Creo tienda nueva y configuré la propiedad Modelo de store = SetupModel.

La pregunta es: ¿cómo puedo acceder a mis propiedades anidadas después de cargar los datos en la tienda?

Necesito algo así como myStore.data.Users(), pero es incorrecto.

¿Alguna idea?

Respuesta

22

Cuando defina su modelo, debe proporcionar la asociación necesaria con los modelos anidados. Desde entonces, no ha proporcionado su código. Aquí está un ejemplo:

Mi Modelo del producto:

Product = Ext.define('Product',{ 
    extend: 'Ext.data.Model', 
    fields: [ 
     {name: 'id', type: 'int'}, 
     {name: 'user_id', type: 'int'}, 
     {name: 'name', type: 'string'}, 
     {name: 'price', type: 'float'} 
    ], 
    proxy: { 
     type: 'localstorage', 
     id: 'products' 
    } 
}); 

Mi Modelo de Usuario:

User = Ext.define('User',{ 
    extend: 'Ext.data.Model', 
    fields: [ 
     {name: 'id',  type: 'int'}, 
     {name: 'name',  type: 'string'}, 
     {name: 'gender', type: 'string'}, 
     {name: 'username', type: 'string'} 
    ], 
    associations: [ 
     {type: 'hasMany', model: 'Product', name: 'products'} 
    ], 
    proxy: { 
     type: 'localstorage', 
     id : 'users' 
    } 
}); 

Ahora, si tiene una instancia de modelo de usuario con los productos. Aquí es cómo se puede acceder a los productos:

var productStore = user.products(); 

Tenga en cuenta que user.products() devuelve un Ext.data.Store. Ahora puede recorrer o filtrar o encontrar su registro de producto. Así es como obtuve el nombre de mi primer producto:

productStore.getAt(0).get('name'); 
+0

Querido Abdel, ¿qué ocurre si queremos hacer un panel de red anidado sin una segunda solicitud del servidor? ¿Es posible con este método? –

+0

Hola Oğuz Çelikdemir, no estoy seguro de cómo lo necesitas ¿Puedes explicar si quieres expandir una fila o algo así? –

+0

@Ogur puede obtener datos anidados en un json y especificar "associatedKey" en hasMany Definion para su asociación. –