AngularJS-Strona powitalna, funkcja globalna etc..

0

Ponieważ nie ma działu javascriptu postanowiłem napisać tutaj.
Piszę sobie edukacyjnie aplikację restową z angularem na froncie. Pytania mam takie:
1-Czy mogę w jakiś sposób stworzyć funkcję globalną? Bo mam menu w formie listy i klikając w podstrony działa gdy są one linkami, ale chcę zrobić redirecting za pomocą przycisków a z tego co czytałem wtedy muszę zrobić funkcję która podmieni location(przyjmując za parametr ścieżkę relatywną) jak piszą tutaj Od razu drugie pytanie - jak wstrzyknąć do kontrolera js $location ? Oprócz tego przydałaby mi się globalna funkcja która sprawdzała by czy ktoś jest zalogowany stąd to pytanie.

2-Tu się źle wyraziłem więc edytuje: Chodzi o to, że jeżeli ktoś nie jest zalogowany a ma link do konkretnej podstrony to może wejść i zobaczyć. Ale jak wejdzie w stronę główną np cośtam.pl to wtedy jak nie jest zalogowany to pokazać mu stronę powitalną, jeżeli jest, inną-główne menu.
Oraz jak sprawdzać status zalogowania zanim strona zostanie załadowana?

3-Zna ktoś sprawdzony sposób na splashscreen gdy jest przetwarzany ajax request? Bo niestety ten mi nie działa.

Z góry dzięki za informacje i zaznaczam, że to dopiero start z angularem.

0
  1. Chyba nie chodzi ci o funkcję globalną, a funkcję dostępną w scopie, gdzie masz dyrektywę ng-click.
    Jeśli masz problem ze zrozumieniem tego, to poczytaj sobie jeszcze raz o tym co to jest scope w angularze i jak działa.

  2. Po prostu wpisz $location jako parametr funkcji, która jest konstruktorem kontrolera.
    Ewentualnie ozdób to jakimś $inject czy notacją tablicową, jeśli planujesz minimalizację.

Generalnie chcesz zrobić coś takiego:

angular.module('app').controller('A', ['$location', function ($location) {
this.redirect = function () { ... };
}]);
<X ng-controller="A as A">
<Y ng-click="A.redirect()"></Y>
</X>
0

Co do sprawdzenia czy ktoś jest zalogowany, to można użyć drobnego hacku w routingu z resolve i $location.

Generalnie nie znam jednak czystej metody na to. Możesz chyba też nasłuchiwać na event $locationChangeStart i wtedy zaimplementować własną logikę obsługującą autoprzekierowanie czy coś takiego. Nie sprawdzałem jednak cyz to działa.

https://docs.angularjs.org/api/ng/service/$location

0
fdfdfdfd napisał(a):
<X ng-controller="A as A">
<Y ng-click="A.redirect()"></Y>
</X>

Nie bardzo czaje X oraz Y - masz na myśli dowolny htmlowy komponent? Co oznacza A as A? Czyli na konkretnej stronie mogę używać różnych kontrolerów tylko je oznaczyć za pomocą ng-controller?

0

X i Y to dowolne elementy (nie myl z komponentami, bo to całkiem co innego).
Ogólnie poczytaj może najpierw coś o angularze, a później pytaj, co? Bo zadajesz pytania jakbyś nie przeczytał nawet pierwszych kilku stron tutoriala.

1 użytkowników online, w tym zalogowanych: 0, gości: 1