Jestem całkiem nowy dla całego świata AngularJS i jak to działa, jednak staram się, aby działał zgodnie z oczekiwaniami. Wiem, że to ma coś wspólnego ze sposobem, w jaki używam $http.get()
i próbuję przypisać zmienne z powrotem do kontrolera, ale po prostu nie mogę tego rozgryźć.
Korzystanie $scope
zamiast this
mogę dostać pracy, jednak jeśli to możliwe, wolałbym używać this
więc mogę użyć „kontroler jako”
kod:
app.controller('ctrlSuppliers', function($http){
this.supplierList = {};
$http.get("http://some_url_here")
.success(function(response) { this.supplierList = response.records;})
.error(function() { this.supplierList = [{supplier_id: 0, supplier_name: 'Error Getting Details'}];});
});
z tego Na przykład nie mogę uzyskać dostępu do żadnych wyników z żądania $http.get
z poziomu supplierList
na stronie HTML (tzn. {{ supplier.supplierList[0].supplier_name }}
nie wyświetla żadnych wyników)
Wiem, że jeśli zmienię kontroler na $scope
, będę mógł uzyskać dostęp do tych danych (chociaż nie będę używać tego samego formatu co powyżej) i wiem również, że dane są zapełniane za pomocą console.log(this.supplierList)
wewnątrz połączenia .success
.
Wiem również, że powodem jego działania jest to, że kontekst this
zmienia się z poziomu kontrolera na wywołanie $http.get
.
Moje pytanie brzmi następująco: Jak uzyskać dostęp do wyników z połączenia $ http.xxx za pomocą this
zamiast scope
? Czytałem kilka różnych źródeł na ten temat, ale większość mówi o użyciu $scope
i obietnic. Nie znalazłem żadnej z tych okładek, używając this
(lub deklarując ją jako var supplier = this
). Każda pomoc byłaby bardzo cenna.
Dzięki,
Po prostu heads-up, że wywołania $ http zazwyczaj nie należą do kontrolerów! Zamiast tego wyodrębnij je do usługi, aby uzyskać ponowne wykorzystanie, stabilność i nieszkodliwy zastrzyk zależności. – Hypaethral
@ GrumbleSnatch Dzięki za to. Jak już powiedziałem, dopiero zacząłem patrzeć na Angulara i nie miałem czasu przejrzeć wszystkich funkcji i funkcji, jednak wiedza o tym teraz prawdopodobnie zaoszczędzi mi wiele czasu na torze, kiedy w końcu je odkryłem – Doug