Me gustaría que mi tienda en Sencha touch para cargar otro archivo PHP según el elemento que en mi carrusel se hace clic. Cada elemento en mi carrusel tiene itemid: {número} asignado. Esta es mi tienda en el momento:

var store = new Ext.data.Store({
        model: 'One',
        proxy: {
            type: 'ajax',
            url: '/carousel2store/Carousel 2_files/get-album.php',
            reader: {
                type: 'json',
                root: 'albums'
            }
        },....etc

He probado la alteración de la tienda como esta, que da ‘/carousel2store/Carrusel 2_files/get-album2.php’, pero me gustaría hacer el número 2 dinámica, por lo que los cambios en el clic:

var store = new Ext.data.Store({
        model: 'One',
        proxy: {
            type: 'ajax',
            url: '/carousel2store/Carousel 2_files/get-album' + '2' +'.php',
            reader: {
                type: 'json',
                root: 'albums'
            }
        },

He intentado agregar el itemid

url: '/carousel2store/Carousel 2_files/get-album' + '{itemid}' +'.php', and
url: '/carousel2store/Carousel 2_files/get-album' + '{data.itemid}' +'.php',

Pero he tenido ninguna suerte hasta ahora. Una muy útil chico en el sencha foro me sugirió probar esto:

var store = new Ext.data.Store({
        model: 'One',
        proxy: {
            type: 'ajax',
            url: '/carousel2store/Carousel 2_files/get-album{itemId}.php',
            reader: {
                type: 'json',
                root: 'albums'
            }
        }
    });

    store.proxy.url = store.proxy.url.replace('{itemId}', 1);

    console.log(store);

…pero no puedo conseguir que funcione en mis pruebas al hacer clic con el ratón, creo que porque se carga la tienda ya antes de que el carrusel de elemento y pulse el oyente (al menos no funcionó para mí en mis pruebas con el ratón). Creo que necesito una manera de forzar la actualización del nombre de la tienda inmediatamente después de elemento, haga clic en.

Gracias de antemano

🙂

InformationsquelleAutor Digeridoopoo | 2011-11-30

5 Comentarios

  1. 9

    Tuve un poco de problema similar donde tengo que cambiar dinámicamente la dirección URL en mi proxy. He encontrado que esto funciona particularmente bien en la mayoría de los casos, sólo asegúrese de manejar su carga de secuencia correctamente.

    store = Ext.StoreMgr.get('YourStore');
    store.setProxy({
        type: 'ajax',
        url: 'http://www.yoururl.com?foo=bar',
    });
    
  2. 3

    Gran solución M69!

    Integrado en la tienda definición a través de la beforeload oyente:

    Ext.define('MyApp.store.Accounts', {
        extend: 'Ext.data.TreeStore',
    
        config: {
            autoLoad: false,
    
            model: 'MyApp.model.Account',
    
            scope: this,
    
            listeners: {
                beforeload: function(store){
                    store.setProxy({
                        type: 'ajax',
                        url: MyApp.getUrl('accounts', {token:MyApp.getToken()}),
                        reader: {
                            type: 'json',
                            rootProperty: 'response.accounts'
                        }
                    });
                }
            }
        }
    });
    
    • Me alegro de que ayudó a!
    • Hola Tomás, entre todas las soluciones me gusta el tuyo el mejor. Podría por favor explicar los parámetros de este método: getUrl(parámetro1,parámetro2)? No entiendo lo que es la 1º y 2º de parámetros y sus tipos.
    • Hola Franva, que el método era sólo un auxiliar interna para devolver la URL sobre la base de la página solicitada y proporcionada de los encabezados. Usted sólo necesita pasar la URL de allí.
  3. 2

    Tengo la misma pregunta con la suya, he resuelto de la siguiente manera:

    store.getProxy().url = './getnotes?folderName=' + folderName;
    store.load();
    

    Yo no tenía la url de proxy de la tienda cuando la define, y establecer el autoLoad a false.

  4. 0

    Espero que esto debería funcionar…..

    var str = Ext.data.StoreManager.lookup('myStoreId');
    str.setProxy({
    type: 'ajax',
    url: 'URL1',
    });
    
  5. 0

    He usado este éxito. es decir, pasar la url en la operación de carga:

    var aStore = this.getMyStore(),
        url = 'data/assertions.php';
    
    aStore.load({
        url: url,
        callback: function (records, operation, success) {
            console.log(records);
        },
        scope: this
    })
    

Dejar respuesta

Please enter your comment!
Please enter your name here