2013-06-08 44 views
7

W sklepie, istnieje beforeload wydarzenie:W Extjs4.1, jak dodać dodatkowe parametry przed synchronizacją jednego sklepu?

beforeload(Ext.data.Store store, Ext.data.Operation operation, Object eOpts) 

słuchając tego wydarzenia, mogę dodać moje dodatkowe param do pracy kiedy robię działanie kwerendy tak:

store.on('beforeload', function(store, operation) { 
    operation.params = Ext.applyIf({ 
     myParam1: 'param1', 
     myParam2: 'param2' 
    }, operation.params); 
}); 

ja też potrzebuję dodać moje dodatkowe parametry podczas tworzenia, aktualizowania i niszczenia akcji. Jednak zdarzenie synchronizacji nie przechodzi operacji ani sklepu:

beforesync(Object options, Object eOpts) 

Czy istnieje jakakolwiek inna metoda?

+0

Używasz AutoSync? Czy dodatkowe parametry potrzebne do przejścia są dynamiczne? –

+0

Wywołuję store.sync() zamiast używać funkcji autoSync. Czy oznacza to, że muszę zmienić dodatkowe parametry za każdym razem, zanim wykonam zapytanie lub akcję CDU? @AmitAviv –

+2

W zależności od kontekstu, który faktycznie powoduje zmianę w dodatkowych parametrach, możesz chcieć użyć 'setExtraParam' gdy zmiana pojawi się w interfejsie użytkownika. Powiedzmy, że jest gdzieś pole wyboru, które powoduje zmianę, możesz posłuchać zdarzenia zmiany i ustawić tam dodatkowy element. –

Odpowiedz

2

Zastosowanie store.getProxy().setExtraParams({ param: 'value', so:'on' }); nadzieja będzie działać dobrze. D

+0

Problem polega na tym, że dodatkoweParamy są wysyłane tylko na żądania "odczytywania", a nie przy tworzeniu, aktualizacji, niszczeniu żądań, jeśli definiujesz API w sklepie. –

1

Zastosowanie

store.getProxy() extraParams.paramName1 = paramValue1; store.getProxy(). ExtraParams.paramName2 = paramValue2;

0

ExtraParam zadziała tylko po wywołaniu api odczytu. Nie działa do tworzenia, aktualizacji, usuwania

grid.store.getProxy().setExtraParam('paramA','XXX'); 

Próbuję inaczej.

grid.store.proxy.api.update = url + "?paramA=XXX"; //set before call sync() 

Java może uzyskać param przez

request.getParameter("paramA");