Ich muss die von $http.get
zurückgegebenen Daten in einer $scope
Variable speichern, die von meiner ui-grid
Steuerung verwendet werden soll.
Ich bin mir sicher, ich vermisse etwas sehr einfaches, aber ich kann nicht herausfinden, was. Hier ist mein Code:
app.controller('AdminUsersGridCtrl', function ($scope, $http, uiGridConstants) {
$http.get('/api/admin/user')
.success(function (response, $scope) {
$scope.myData = response;
})
.error(function (error) {
console.log(error);
});
console.log($scope.myData);
$scope.gridOptions = {
data: 'myData',
enableFiltering: true,
columnDefs: [
{ field: 'firstName' },
{ field: 'lastName' },
{ field: 'jobTitle'},
{
field: 'email',
filter: {
condition: uiGridConstants.filter.ENDS_WITH,
placeholder: 'ends with'
}
},
{
field: 'phone',
filter: {
condition: function(searchTerm, cellValue) {
var strippedValue = (cellValue + '').replace(/[^\d]/g, '');
return strippedValue.indexOf(searchTerm) >= 0;
}
}
},
]
};
});
Meine Konsole innerhalb Erfolg druckt undefined
. Wie kann ich auf das Original $scope
innerhalb der $http.get success
Funktion zugreifen?
Sie haben Zugriff darauf, es ist nur, dass der Rest Ihres Codes vor dem 'Erfolg' ausgeführt wird, weil AJAX = asynchron! Verschieben Sie Ihren Code an den Rückruf – tymeJV
, wenn Ihre Konsole die Bereichsvariable myData protokolliert. Sie ist in der Tat ** undefiniert **, da Sie immer noch eine ** asynchrone http-get-Anforderung ** ausführen. Wenn Sie "myData" an die gridOptionen binden müssen und 100% sicher sein wollen, dass es korrekt geladen und fehlerfrei ist, parsen Sie Ihren Code im ** .erfolgreich ** -Rückruf, oder erstellen Sie ein 'Versprechen' und lösen Sie ihn Sobald die HTTP-Anfrage abgeschlossen ist. – briosheje