Mai mult
Cum pentru a executa AngularJS controller funcția pe pagina de încărcare?
În prezent am o Angular.js pagina care permite căutarea și afișează rezultatele. Utilizatorul face clic pe un rezultat de căutare, apoi face clic pe butonul înapoi. Vreau rezultatele de căutare pentru a fi afișate din nou, dar nu pot't lucra în modul de a declanșa căutare pentru a executa. Aici's detalii:
- Mi Angular.js pagina este o pagina de căutare, cu un câmp de căutare și de căutare buton. Utilizatorul poate introduce manual într-o interogare și apăsați un buton și și ajax interogare este concediat, iar rezultatele sunt afișate. Am actualizați URL-ul cu termenul de căutare. Că toate funcționează bine.
- Utilizatorul face clic pe un rezultat de căutare și este luat de la o altă pagină - care funcționează prea bine.
- Utilizatorul face clic pe butonul înapoi, și se duce înapoi la mea unghiulară pagina de căutare, și URL-ul corect este afișat, inclusiv termenul de căutare. Toate funcționează bine.
- Am legat câmpul de căutare valoare termen de căutare în URL-ul, astfel încât acesta conține așteptat termen de căutare. Toate funcționează bine.
Cum pot obține funcția de căutare pentru a executa din nou fără ca utilizatorul să trebuiască să apăsați "butonul de căutare"? Dacă ar fi fost jquery, atunci mi-ar executa o funcție în documentready funcție. Pot't vedea Angular.js echivalent.
355
14
Pe de o parte ca @Mark-Rajcok spus că poate scăpa interioară privată funcția:
De asemenea, puteți lua o privire la ng-init directiva. Punerea în aplicare va fi mult, cum ar fi:
Dar ai grija si de el unghiulare documentarea presupune (de la v1.2) de a NU folosi
ng-init
pentru asta. Cu toate acestea omi depinde de arhitectură de aplicație.Am folosit
ng-init
când am vrut să treacă o valoare din back-end în app unghiulară:Încercați acest lucru?
N-am putut să
$viewContentLoaded să lucrezi pentru mine, și
ng-initar trebui să fie utilizate numai într-un
ng-repeat` (conform documentației), și, de asemenea, de asteptare o funcție direct într-un controller poate cauza erori dacă acest cod se bazează pe un element care nu't a fost încă definită.Aceasta este ceea ce fac și funcționează pentru mine:
Dacă nu're folosind
ui-router
. Apoi se's:Dimitri's/Mark's soluție n't de lucru pentru mine, dar folosind $timeout funcție pare să funcționeze bine pentru a se asigura codul se execută numai după marcajul este prestate.
Sper că vă ajută.
Puteți face acest lucru dacă doriți să urmăriți viewContentLoaded DOM obiect pentru a schimba și apoi face ceva. folosind $domeniul de aplicare.$pe de lucrări, dar prea diferit, mai ales atunci când aveți o pagină modul de rutare.
Puteți utiliza unghiular's $obiect fereastră:
O altă alternativă:
(prin https://stackoverflow.com/a/30258904/148412)
Încă o altă alternativă, dacă aveți un controler specific doar pentru că pagina:
Atunci când se utilizează $routeProvider puteți rezolva pe .de stat și bootstrap dvs. de servicii. Acest lucru este de a spune, aveți de gând să-Controler de încărcare și să Vizualizați, numai după soluționarea dvs. de Servicii:
ui-rute
Servicii
Găsit Dmitri Evseev răspuns destul de util.
Cazul 1 : Folosind angularJs singur:
Pentru a executa o metoda pe pagina de încărcare, puteți utiliza
ng-init
în vedere și declare metoda init în controler, având în a spus că utilizarea mai greu funcție nu este recomandat, ca pe unghiulare Docs pe ng-init:HTML:
Controler:
Avertisment : nu utilizați acest controler pentru un alt punct de vedere un alt intenția ca aceasta va duce la metoda de căutare fi executat acolo.
Cazul 2 : Folosind Ionic:
codul De mai sus va funcționa, doar asigurați-vă vizualiza cache-ul este dezactivat în route.js` ca:
route.js
Sper că acest lucru vă ajută
Am avut aceeași problemă și numai această soluție a lucrat pentru mine (are o funcție după ce un complet de DOM a fost încărcat). Eu folosesc acest lucru pentru a defila la ancora după ce pagina a fost incarcata:
Puteți salva rezultatele de căutare într-un serviciu comun, care se poate folosi de oriunde și nu't de clar atunci când naviga la o altă pagină, și apoi puteți seta rezultatele de căutare cu datele salvate pentru un clic pe butonul înapoi
Pentru backbutton
apelul inițial în interiorul metodelor de sine inițializa funcție.