[英]AngularJS Variable is Undefined
所以我的代碼看起來像這樣
.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,第二個警報給了我“未定義”。 怎么了?
在從REST調用獲取數據之前,將調用第二個警報。 這是由於javaScript的異步特性。 因此,您將獲得未定義的價值。
在您的response.data
似乎未定義Winetype_ID
,請檢查您的響應數據。 我建議使用console.log();
因此您的腳本不會停止。
讓我澄清一下,您的第一個警報將是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
。
您可以轉到此鏈接獲取更多詳細信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.