Autor Zpráva
gekon
Profil *
Ahoj, pokouším se udělat si v javascriptu (+jquery) grid s dataStore (Zaujal mě EXT framework, ale je to obří a pomalé).

Mám vytvořený grid, kterému předávám instanci dataStore, vytvoření instance gridu je vázané na listener onclick události elementů. Kód vypadá takto nějak:
           $('#x-user-favorites').live('click',function(){
              var store = new dataStore();
              store.setUrl({plink ajax:getdata ,'users_favorites_groups'});

               var grid = new simpleGrid();
              grid.setTitle('Some title');
              grid.addColumn('nazev','name',null);
              grid.addColumn('public',null,function(row){
                  return row['public'] ? 'Yes' : 'No';
              });
              grid.addHeader('klik', function(){
              //callback
              });
              grid.setDataStore(store);
              grid.setTargetElement('snippet--user_config');
              grid.render();

            });
Například po smazaní záznamu budu potřebovat zavolat metodu instance toho gridu:
$.ajax {
  success: function() {
    grid.updateStore();
  }
}
Ale tápu nad tím, jak inteligentně přistupovat k instancím (nejen) toho gridu. Globální proměnná mi nepřijde jako moc rozumné řešení. Jak na to ?
Díky za odpověď.

(předávání url dataStore je takto prozatimní, {} je makro nette frameworku)
Radek9
Profil
gekon:
Co máš proti globálním proměnným? V JS jsou normálně používané, plno aplikací by se bez nich psalo dost krkolomně.
Chamurappi
Profil
Reaguji na gekona:
Rozsahem platnosti proměnné je funkce, v níž je ta proměnná deklarovaná. Funkce můžou být uvnitř jiných funkcí. To je asi tak vše, co potřebuješ vědět. Z těchto zákonitostí jde odvodit řešení.

Zaujal mě EXT framework, ale je to obří a pomalé
Proč používáš jQuery s metodou .live?

new simpleGrid();“ … „new dataStore();
Bývá zvykem, že názvy konstruktorů začínají velkým písmenem.
gekon
Profil *
Radek9:
všude čtu, že globálnní proměnné dělají paseku a často se chovají zajímavě.

Chamurappi:

1) platnost chápu, teď je to nacpané prozatimně v tom listeneru.
2) click metoda jako taková mi někdy nefunguje na elementy rendrované ajaxem.
3) ok díky za tip
_es
Profil
gekon:
click metoda jako taková mi někdy nefunguje na elementy rendrované ajaxem
Môžeš ju tým elementom predsa priradiť po tom „rendrovaní“.
Radek9
Profil
gekon:
všude čtu, že globálnní proměnné dělají paseku a často se chovají zajímavě.
To ale není chyba těch proměnných jako spíš „programátorů“, kteří je zajímavě používají.
Chamurappi
Profil
Reaguji na gekona:
globálnní proměnné dělají paseku
Spíš bych řekl, že je dobrým zvykem mít rozsahy platnosti omezené co nejvíc. Co nemusí být globální, nechť není globální.
Zrovna u instance tvého objektu není důvod, aby byla globální (a povinně nanejvýš jedna).

teď je to nacpané prozatimně v tom listeneru
Stačí, když budou listener a tohle nacpané v jiné společné funkci… třeba.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0