Próbuję połączyć mój pierwszy komponent kątowy z ngRoute i do tej pory nie mogę uzyskać danych do rozwiązania. config:Wiązania komponentu kątowego Nie zdefiniowano
.when('/myfirstcomponent', {
template: '<myfirstcomponent claimKeys="$resolve.claimKeys"></myfirstcomponent>',
resolve: {
claimKeys: ['$http', function($http) {
$http.get('server/claimkeys.json').then((response) => {
var claimKeys = response.data.DATASET.TABLE;
return claimKeys;
});
}]
}
})
Składnik:
.component('myfirstcomponent', {
bindings: {
'claimKeys': '@'
},
templateUrl: 'components/component.html',
controller: [function() {
this.$onInit = function() {
var vm = this;
console.log(vm.claimKeys);
};
}]
HTML dla składnika po prostu ma element P z jakiegoś losowego tekstu to wszystko.
widzę podczas debugowania, że jestem pobierania danych, ale nie można uzyskać do niego dostęp na kontrolerze składnik ...
EDIT: Dzięki przyjętym odpowiedź poniżej Mam stały mój problem. Nie miało to nic wspólnego z problemem z asynchronicznymi wywołaniami, ale z tym, jak zdefiniowałem moją trasę i komponent. Zobacz poniżej kod naprawy. Dzięki jeszcze raz.
Cóż, moim pierwszym problemem jest szablon "claimKeys", który powinien być kluczem roszczenia. Jednak to po prostu rozwiązuje łańcuch znaków "$ resolve.claimKeys" ... Trochę postępu, ale już nie. – Mickers
Możliwy duplikat [Jak mogę zwrócić odpowiedź z asynchronicznego połączenia?] (Http://stackoverflow.com/questions/14220321/how-do-i-return--response- from-an-asynchronous-call) –
'return claimKeys' nie zwraca niczego do' $ resolve.claimKeys', ponieważ jest asynchroniczne. Zobacz duplikację. –