Ionic - app.run wywoływany wiele razy

0

Witam,

Proszę o pomoc, próbuję zainicjalizować pewne rzeczy przy uruchamianiu aplikacji, ale wygląda na to, że element .run jest wywoływany wiele razy, przy każdokrotnej zmianie strony.

var starter = angular.module('starter', ['ionic'])
starter.run(function ($rootScope) {
    if ($rootScope.ifVarInitialized != 1) {
        alert('This is a run element.');
        $rootScope.ifVarInitialized = 1;
    }
});

Co więcej, napisałem powyższy kod, żeby wyłączyć wielokrotne wywowyłanie kodu, ale alert i tak pojawia się wielokrotnie. Najwyraźniej za każdym razem zmienne rootScope są resetowane. Czy to jest normalne zachowanie?

Próbowałem osiągnąć to samo z elementem .config, niestety efekt jest identyczny.

Może problem jest związany z faktem, że w projekcie jest używane przełączenie się między stronami za pomocą normalnych linków html? Może powinienem użyć zamiast tego zmiany stanów/widoków/operacji push?

Wersje: Ionic: 1.3.1 IONIC CLI: 2.1.17 Cordova CLI: 6.4.0

0

Jeśli robisz routing poza angularem, to za kazdym razem będzie się on ładował od nowa. Zmiana stanów jest wskazana. Inaczej cała aplikacja straci swój wewnetrzny stan i koniec.

0
członek zarządu napisał(a):

Jeśli robisz routing poza angularem, to za kazdym razem będzie się on ładował od nowa. Zmiana stanów jest wskazana. Inaczej cała aplikacja straci swój wewnetrzny stan i koniec.

Dzięki.

  1. Czy możesz zaproponować tutoriala, na podstawie którego będę mógł zrobić routing w oparciu o zmianę stanów?
  2. Na tę chwilę przełączanie między stronami trwa 1-2s, to jest b. długo wg mnie. Czy przeprogramowanie na zmianę stanów spowoduje przyspieszenie przełączania stron?
0

Przyspieszy, nie będziesz ładował ponownie załadowanych już plików html/JS (tu jeszcze dochodzi kwestia cache'a, bo przeglądarka cachuje pliki, które juz raz zaciągnęła. No chyba, że cache jest wyłączony). Poza tym musi się wyrenderowac cały DOM, załadować angular i inne liby do pamięci.

Przy zmianie stanów masz tylko zmianę kawałka DOMa, angular jest już załadowany + ładują się jakeis tam zależne moduły, ale to jest raczej lekka operacja (w małych aplikacjach).

Nie znam się na Ionicu, ale jak się da to wykorzystałbym ui-routera. C odo tutoriala - jesli masz abonament wykupiony na pluralsight, egghead czy czyms takim - byloby najprościej. W innym przypadku zostają jakieś tutoriale randomowe w necie, niezbyt jestem z nimi zaznajomiony.

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