Jakie są różnice między konstruktorami, metodami ionViewDidLoad i ngOnInit. Jakie działania są odpowiednie w każdym przypadku.Angular 2 i Ionic 2: Jakie są różnice między konstruktorami, metodami ionViewDidLoad i ngOnInit?
Odpowiedz
W odniesieniu do ionic2 constructor
: w prostych słowach używamy go do tworzenia instancji naszych wtyczek, usług itp., Na przykład: Masz stronę (widok), gdzie chcesz wyświetlić listę wszystkich uczniów, a ty mieć plik json, który zawiera wszystkich uczniów (ten plik jest plikiem danych), co musisz zrobić, aby utworzyć usługę w tej usłudze, utworzysz metodę i uderzysz w żądanie http.get
, aby uzyskać dane json, więc tutaj potrzebujesz co? http
po prostu zrobić w ten sposób:
import {Http} from '@angular/http';
@Injectable()
export class StudentService{
constructor(public http: Http){}
getAllStudents(): Observable<Students[]>{
return this.http.get('assets/students.json')
.map(res => res.json().data)
}
}
zawiadomienie konstruktora teraz ponownie, jeśli chcemy korzystać z tej metody usługi pójdziemy do naszego widoku/strony oraz:
import {StudentService} from './student.service';
import { SocialSharing } from '@ionic-native/social-sharing';
export class HomePage implements OnInit {
constructor(public _studentService: StudentService, public socialSharing: SocialSharing) {
}
ponownie zauważyć konstruktora tutaj, my Tworzymy instancję StudentService w konstruktorze i jeszcze jedno, używamy wtyczki socialSharing, aby użyć tego, że tworzymy taką instancję również w konstruktorze.
OnInit
: To jest naprawdę niesamowite w ionic2 lub możemy powiedzieć w AngularJs2. W tym samym przykładzie powyżej widzimy, co to jest ngOnInit
. Więc jesteś gotowy z metodą serwisową, teraz w widoku/stronie chcesz, aby dane z listy studentów były dostępne, gdy tylko pojawi się twój widok, powinna to być pierwsza operacja, która automatycznie się załaduje, ponieważ podczas wczytywania widoku lista studentów powinna być widoczna. Tak więc klasa implementuje OnInit
i definiujesz ngOnInit
. Przykład:
export class HomePage implements OnInit {
...
....
constructor(....){}
ngOnInit(){
this._studentService.getAllStudents().subscribe(
(students: Students[]) => this.students = students,
)
Mam nadzieję, że to wyjaśnienie rozwiąże wątpliwości dotyczące tych dwóch. Dzięki
Mimo że odpowiedź Niks wskazuje właściwy porządek rozkazów cyklu życia, zespół Angular recommends against fetching data inside constructors.
Ale aby odpowiedzieć na twoje pytanie, ionViewDidLoad()
i ngOnInit()
powinny działać w tym samym czasie, więc są w zasadzie to samo; choć ionViewDidLoad()
checks for caching:
Jeżeli liście stronę, ale jest buforowane, to wydarzenie nie będzie ogień ponownie kolejny patrzenia.
Z tym, za nic nie chcesz pamięci podręcznej, ale chcemy, aby załadować na/przed komponent zostanie zamontowany należy użyć ionViewWillEnter()
lub ionViewWillLoad()
do rzeczy, jak żądań GET. ionViewWillLoad() has yet to be documented.
Konstruktor
constructor
nie jest kątowym cecha, nazywana jest przez silnik JavaScript. Cóż, napisany w TypeScript, ale jest to koncepcja ES6, jest częścią haka klasy lifetime. Dlatego nie jest to dobre miejsce, aby wiedzieć, kiedy Angular zakończył inicjowanie swoich komponentów.
Jest to odpowiednie miejsce do wykonania wstrzyknięcia zależnego.
ngOnInit
ngOnInit
jest haczyk kątowa cyklu. Jest wykonywany, gdy Angular zakończy konfigurowanie komponentu. Oznacza to, że w tym momencie wiązania własności są wykonywane na przykład.
Jest to dobre miejsce do inicjowania niektórych danych dla komponentu.
ionViewDidLoad
ionViewDidLoad
jest wydarzeniem nawigacja cyklu jonowej. Ionic ma koncepcję stron. Ma kilka klas związanych z logiką nawigacji, podstawową klasą jest NavController. Mają pojęcie stosu nawigacyjnego, więc strony są w zasadzie wypychane lub wyskakiwane ze stosu. Podczas tego procesu zdarzenia związane z cyklem życia nawigacji, takie jak ionViewDidLoad, są uruchamiane.
jonViewDidLoad jest wywoływany po załadowaniu strony. Domyślnie strony są buforowane, co oznacza, że zdarzenie to nie zostanie ponownie uruchomione, jeśli nie zostanie zniszczone.
Biorąc pod uwagę, że jest to dobre miejsce do ustawienia kodu strony.
Referencje:
- 1. Ionic 2/Angular 2 obiecująca powracająca obserwowalna
- 2. Zwrot wartości obietnicy w Angular 2, Ionic 2
- 3. Jakie są różnice między PECL i PEAR?
- 4. Jakie są różnice między Haskell i PureScript?
- 5. Jakie są różnice między Conda i Anaconda
- 6. Jakie są różnice między @dynamic i @synthesize?
- 7. Jakie są różnice między LinFu.DynamicProxy i Castle.DynamicProxy?
- 8. Jakie są różnice między utf8_general_ci i utf8_unicode_ci?
- 9. Jakie są parametry numeru Pipe - Angular 2
- 10. Główne różnice między Zend Framework 2 i Symfony 2
- 11. Angular 2: jakie różnice między operatorami porównania == i === w dyrektywie ngIf
- 12. Angular 2 i Three.js
- 13. Ionic 1 AngularJs 1 kontra Ionic 2 AngularJs 2?
- 14. Różnica między zdarzeniami i metodami
- 15. Jakie są kluczowe różnice między interfejsami API Repa 2 i 3?
- 16. Różnice między metodami przeładowywania stron
- 17. Jakie są różnice między flex-grow i width?
- 18. Angular 2+ window.onfocus i windows.onblur
- 19. Object.observe wycofanie i RxJS i Angular 2
- 20. Uzyskaj dostęp do kluczowych danych w całej aplikacji w Angular 2 i Ionic 2
- 21. Ionic 2 zmienne środowiskowe dev i prod
- 22. Ionic 2/Angular 2/CORS: nagłówki HTTP nie są wysyłane z żądaniem
- 23. Angular 2 Element niewidoczny
- 24. Jakie są podstawowe różnice funkcji/architektury między BEAM i JVM?
- 25. Jakie są różnice między zakresami leksykalnymi i statycznymi?
- 26. Jakie są główne różnice między Sinatrą i Ramaze?
- 27. Jakie są różnice między std :: move i unique_ptr :: reset?
- 28. Jakie są podstawowe różnice między zestawem i didSet?
- 29. Jakie są kluczowe różnice między Meteor, Ember.js i Backbone.js?
- 30. Jakie są niezgodne różnice między C (99) i C++ (11)?
nie wiem 'ionViewDidLoad' ale inni są wyjaśnione w http://stackoverflow.com/ pytania/35845554/angular-2-component-constructor-vs-oninit –
ionViewDidLoad jest jonowym m etykieta podobna do ngOnInit() in angle2. Aby dowiedzieć się więcej na ten temat, sprawdź dokładnie http://ionicframework.com/docs/v2/api/navigation/NavController/ – AishApp
http://ionicframework.com/docs/v2/api/navigation/NavController/#lifecycle-events . Odgadnij, że na twoje pytanie odpowiadają te 2 linki. – Ivaro18