Also habe ich den folgenden Code, bekam ...Angular 1.5 Gültigkeitsbereich Variable Arbeits nicht aus PouchDB Antwortfunktion
testApp.controller(...) {
$scope.results = [];
$scope.hasData = true;
$scope.results.push({
"name": "test"
}); // WORKS
db.get('table_people').then(function(response) {
console.log('success');
$scope.results.push({
"name": "test"
});
}); // this DOESN'T WORK even though the "success" message is printed...
});
Und wie Sie können aus den Kommentaren sagen, die erste push
zu den Array funktioniert, aber Letzteres nicht. Die oberste Zeile kann in der Angular-Vorlage unter Verwendung von {{ results }}
ausgedruckt werden, aber die letzte gibt ein leeres Array zurück.
Edit: Eine Lösung unter Verwendung $timeout
als gefunden wurde Zyklus verdaut nicht ausgeführt wurde, sondern Art fühlt sich wie eine zusammengehackt Lösung.
Edit: Lösung ...
db.get('table_people').then(function (response) {
console.log('success');
$timeout(function() {
$scope.results = response.data;
});
});
Der Code Lösung ist etwas anders, als ich nicht mehr die Testdaten müssen nicht mehr aufgrund der Code Funktion und kann die Antwortdaten direkt anwenden.
Was passiert, wenn Sie console.log ($ scope) von innerhalb der verschachtelten Funktion? Vielleicht ist $ scope tatsächlich außerhalb des Geltungsbereichs - kein Wortspiel beabsichtigt. –
Veröffentlichen Sie die Lösung auch. Vielleicht kann es aufgeräumt werden. –
Oder vielleicht nur einen Digest-Zyklus erzwingen. –