[AngularJS] ngRoute nested routing bez UI Route rubrika: Programování: JavaScript

6 Mlocik97
položil/-a 23.4.2018

Zdravím,

potreboval by som spraviť pomocou ngRoute takú vec, že by sa mi načítala komplet stránka (po načítaní fungovala aj offline), teda žiadne AJAXové volania na server, (čož i ngRoute robí) akurát to potrebujem tak že mám 2 navigačné menu, a 2 obsahové elementy. Potreboval by som aby po kliknutí na tlačítko v prvom menu sa načítalo zo určitého súboru niečo do druhého menu, z ďalšieho súboru do obsahového elementu, a ešte z ďalšieho súboru do druhého obsahového elementu, v prípade kliknutia na tlačítko v druhom menu potrebujem aby sa z určitého súboru načítal obsah iba do prvého obsahového elementu.

asi niečo takéto: https://s14.postimg.cc/wx5664aa9/screenshot_82.png

dosť to omedzuje to že môžem mať iba jeden ng-view. Naopak ui-view by som mohol mať aj viacero čož by riešilo problém ale potrebujem to spraviť bez ui-view.

Zároveň by sa URL menila v zmysle podľa toho čo by bolo zvolené:

v prípade kliknutia na položku v druhom menu:

root...... /položka_v_menu_1/položka_v_menu_2/

v prípade kliknutia na položku v prvom menu:

root...... /položka_v_menu_1/prvá_položka_v_menu_2/

(pri kliknutí na položku v menu 1 sa načíta vždy prvá položka v menu 2 z príslušného menu 1 (ako by menu2 bolo "podmenu" menu1)

odkaz Vyřešeno
6 Mlocik97
odpověděl/-a 27.5.2018
 
upravil/-a 28.5.2018

Tak nakoniec som to vyriešil úplne iným spôsobom a funguje to skvele.... pre obsah 1 mám ng-view štandardne, a pre menu 2 a obsah 2 mám kombináciu ng-switch a ng-include... pre ng-switch URL odchytávam z $location.path() funkce.

Komentáře

  • kohven : ng-include je výrazně lepší řešení ve smyslu víc Angular. Kdybych mohl, dám si za to $compile + $element palec dolů. :) 28.5.2018
  • Mlocik97 : nakoniec 5 riadkov kódu v JS, a podarilo sa mi neco, na co iný používajú celý modul ui-router... ani som neveril že to môže ísť tak jednoducho. Mám pocit že ngRoute (a AngularJS) vie toho viac než si viacerý myslia... 28.5.2018
  • kohven : Z mého pohledu bych spíše řekl, že ui-router toho umí víc, než si lidi při používání ng-route myslí. :) S tím ng-route jsi byl v podstatě nucen si tu funkcionalitu doprogramovat a když k tomu přijde někdo druhý, tak je to zase další kousek kódu navíc, který bude muset pochopit. A u toho ui-routeru by byla šance, že už by ho třeba znal. Ale to už je jen takové teoretické povídání. Zvlášť když se bavíme o AngularJS a ne Angular2+. V tomhle případě asi dává smysl si to dopsat, když jde jen o pár položek v menu. A já si ještě pro jistotu jednou nasypu popel na hlavu za to, že opisuji ng-include pomocí $compile služby. :) 28.5.2018
  • Mlocik97 : áno on ui-router umí víc, lenže v podstate 90% lidí ho používa len pre to aby mohli mať nested routing... a pokiaľ nič iné/ďaľšieho z neho nevyužívajú, pokladám za nezmysl ho používať... proč ťahať nekolik desiatok až skoro 100kB zránik pre pár položiek v menu když to jde na 5 riadkov... samozrejme pre tých čo majú tých zanorení viac, a úrovne URL pathu viac než 2 (čož ja mám práve 2) tak už sa dá uvažovať, ak ešte používajú neco složité s parametrami a trebárs podla hodnoty v nejakom políčku sa mení URL, pričom v tom políčku môže byť úplne ľubovoľný string, tak to už je takmer nutnosť... ale myslím že veľa stránok sa zaobíde bez ui-routeru, len lidi sú lenivý... 28.5.2018
  • Mlocik97 : jinák dúfam že sa poučíš zo mňa a vo svojich projektoch prestaneš na toto používať $compile :D 28.5.2018
  • kohven : V těchto případech většinou odpovídám: "Většinu vývoje lze zvládnout jen s editorem Vim a assemblerem. Jen jsou lidi lenivý." :-) To asi záleží na každém z nás, jakou si kdy vybere míru abstrakce. Pokud jde o informační systém v intranetu, tak 100kB není žádný problém a naopak mít routovací pravidla popsána pomocí ng-switch někde po různých templates by asi nebylo ideální. Vždy záleží případ od případu. 28.5.2018
  • kohven : $compile bych asi měl přestat používat už kvůli tomu, že v Angular2+ už není, ale musím se nejdřív zbavit těch hacků se scope, kterých se při tom dopouštím. :) 28.5.2018
  • Mlocik97 : to je pravda.... ako pre moje použitie kedy mimo štandardného routingu / skrz ng-switch načitávam po 3 súbory do 2 elementoch, to nieje problém. Ale kdyby tých súborov bolo 50, elementov 20, a trebárs by ešte tie elementy mali v sebe ďalšie vnorené ng-switche a ďalšie súbory by načitávali, tak vtedy by ten template vyzeral hrozne... pre obrovské mohutné projekty ui-router ok, inak asi moje riešenie je dobré. Pre môj projekt ideálne, kde mám len 2 úrovne vnorenia a iba 3 súbory v 2 elementoch ktoré prepínam cez switch... 28.5.2018

Pro zobrazení všech 2 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.