2017-02-15 26 views
0

Так что мой код выглядит следующим образомAngularJS Переменная Неопределенный

.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);}]) 

первое предупреждение дал мне право WineType_ID, второе предупреждение дать мне «Неопределенный». Что случилось?

+0

первое предупреждение будет 'undefine' и второй будет иметь значение –

+0

Да, вы правы, но почему? Я хочу сделать дальнейший sutff с winet, но он всегда говорит, что он не определен –

+0

проверить мой ответ. –

ответ

0

Позвольте мне очистить ваше первое предупреждение будет undefined, а второе будет иметь значение.

Это потому, что у вас не будет значения $scope.Winet, когда он будет звонить в первый раз. Как только вы получите значение с сервера, оно будет иметь некоторое значение. Это то, что Асинхронный - вот и все.

На данный момент вы можете использовать присвоение некоторого значения $scope.Winet. поэтому первым предупреждением будет это значение, а не неопределенное. Попробуйте

$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 

Теперь первое предупреждение время будет alert before Asynchronous call completion.

Подробнее detials вы можете перейти по этой ссылке.

Asynchronous Details

0

Похоже, что Winetype_ID не определено в вашем response.data, проверьте свои данные ответа. И я бы предложил использовать console.log();, чтобы ваш скрипт не останавливался.

1

Ваше второе предупреждение вызывается перед получением данных из вызова REST. Это связано с асинхронным характером javaScript. Таким образом, вы получаете значение как неопределенное.