Ich habe einen Hauptcontroller und darin eingebettete Controller. Im Hauptcontroller habe ich das Objekt per asynchroner Abfrage zum Dienst definiert und versuche das Objekt im verschachtelten Controller zu verwenden. Aber in dem Objekt im verschachtelten Controller ist leer, weil es ausgelöst wird, bevor es im Hauptcontroller aktualisiert wird.Brauchen Sie Hilfe, um asynchrone Aufrufe in angular js zu verstehen
Wie ich verstehe, sollte asynchrone Abfrage den Bereich aktualisiert, nachdem Daten erhalten?
.controller('MainController', ['$scope', function($scope) {
$scope.uData = {};
$scope.uDataCurrent = {};
$scope.usersData = usersFactory.getUsersData().query(
function(response) {
$scope.uData = response;
$scope.uDataCurrent = $filter('filter')($scope.uData, {'user':$scope.myuser});
$scope.uDataCurrent = $scope.uDataCurrent[0];
},
function(response) {
$scope.message = "Error: "+response.status + " " + response.statusText;
});
})]
.controller('NestedController', ['$scope', function($scope) {
console.log($scope.uDataCurrent); // returns empty object
}])
Service:
.service('usersFactory', ['$resource', 'baseURL', function($resource,baseURL) {
this.getUsersData = function(){
return $resource(baseURL+"/index.php?app=users&format=raw&resource=user",null, {'update':{method:'PUT' }});
};
}])
Können Sie Ihre Fabrik schreiben zu Code? – hsiung
Der verschachtelte Controller "feuert" nicht. Der Initialisierungscode wird ausgeführt, wenn ein Element in dom instanziiert wird, dem ein Controller zugewiesen ist. Der Abfrage-Callback wird 'uDataCurrent' viel später setzen. Wenn Sie eine Bindung verwenden, wird die UI beim Empfang mit den neuen Daten aktualisiert. –
@hsiung überprüfen Sie den ursprünglichen Code – MikeDiam