2015-01-22 2 views
0

Я хочу загрузить запись на основе моего выбора узла дерева и показать ее в моей форме. Но мой магазин не загружен в моем контроллере. Где и как загрузить хранилище с моим параметром?load store с динамическим параметром

 var me = this; 
     var idTag= me.getMyNode(); 
     me.getTagStore().on('beforeload', function(store, operation, eOpts) { 
      operation.params = { 
       idTag: idTag 
      }; 
     }, me); 
     // it will not be loaded here and I get rec=undefined 
     var rec = me.getTagStore().load().getAt(0); 
     me.getMyForm().loadRecord(rec); 

И вот мой магазин:

Ext.define('TTT.store.Tag', { 
    extend: 'Ext.data.Store', 
    requires: [ 
     'TTT.model.Tag' 
    ], 
    model: 'TTT.model.Tag', 

    proxy: { 
     type: 'ajax', 
     url: 'tag/find.json', 
     reader: { 
      type: 'json', 
      root: 'data' 
     } 
    } 
    ,baseParams: { 
     idTag: 30 
    }, 
}); 

ответ

1

Вы можете вызвать метод загрузки вручную, когда это необходимо и передавать любые параметры, необходимые, например:

me.getTagStore().load({ 
    params: { 
     idTag: idTag 
    } 
}); 

При вызове этого вам должен увидеть ваш запрос с параметром в вашем окне консоли в браузере.

В коде выше, эта строка:

// it will not be loaded here and I get rec=undefined 
var rec = me.getTagStore().load().getAt(0); 

Операция загрузки занимает немного времени, не так много, но это займет немного времени. Вы должны слушать случае нагрузки на магазин, чтобы быть в состоянии сделать что-то вроде этого, вот пример:

me.getTagStore().load({ 
    params: { 
     idTag: idTag 
    }, 
    scope: this, 
    callback: function(records, operation, success) { 
     // the operation object 
     // contains all of the details of the load operation 
     console.log(records); 
    } 
}); 

Оформить документацию для store.

Смежные вопросы