2017-02-15 4 views
0

Also mein Code wie diesAngularJS Variable nicht definiert ist

.controller('weinDetailsCtrl', ['$scope', '$stateParams', '$http', '$rootScope',function ($scope, $stateParams, $http, $rootScope) { 

$scope.url = "https://winetastic.azurewebsites.net/tables/Wine/" + $rootScope.actWine + "?ZUMO-API-VERSION=2.0.0"; 
$scope.Winet; 

$http({ 
    method: "GET", 
    url: $scope.url 
}).then(function mySucces(response) { 

    $scope.wineDetails = response.data; 
    $scope.Winet = $scope.wineDetails.Winetype_ID; 
    alert($scope.Winet); 


}, function myError(response) { 
    $scope.wineDetails = response.statusText 
}); 

alert($scope.Winet);}]) 

der erste Alarm mir das Recht WineType_ID gab aussieht, gibt den zweiten Alarm mir ein ‚Nicht definiert‘. Was ist los?

+0

erste Alarm wird 'undefine' und zweite wird sein Wert mit –

+0

Ja, Sie haben Recht, aber warum? Ich will weiter mit Wein machen, aber es sagt immer, es ist undefiniert –

+0

überprüfe meine Antwort. –

Antwort

0

Lassen Sie mich Ihnen klar, Ihre erste Warnung wird undefined sein und zweiten wird Wert haben.

Dies ist, weil Sie $scope.Winet Wert nicht haben, wenn es zum ersten Mal aufrufen wird. Sobald Sie den Wert vom Server erhalten, wird es einen gewissen Wert haben. Dies ist, was asynchrone ist alles über.

Vorläufig können Sie einen Wert zu $scope.Winet zuweisen. Der erste Zeitalarm ist also dieser Wert undicht. Versuchen

$scope.url = "https://winetastic.azurewebsites.net/tables/Wine/" + $rootScope.actWine + "?ZUMO-API-VERSION=2.0.0"; 
$scope.Winet = 'alert before Asynchronous call completion';//you can change it as your need 

nun erstmals Alarm wird alert before Asynchronous call completion.

Weitere Details finden Sie unter diesem Link.

Asynchronous Details

0

Es scheint, dass Winetype_ID in Ihrem response.data nicht definiert ist, überprüfen Sie Ihre Antwortdaten. Und ich würde vorschlagen, console.log(); zu verwenden, damit Ihr Skript nicht stoppt.

1

Ihre zweite Warnung wird vor dem Abrufen von Daten aus dem REST-Aufruf aufgerufen. Dies liegt an der asynchronen Natur von javaScript. Sie erhalten also Wert als undefiniert.

Verwandte Themen