2017-07-27 95 views
-1

我有一個功能,需要檢查輸入是否已經在數據庫中的現有照片。它已經可以顯示它是否已經存在照片。我現在的問題是,如果我輸入一個ID並且沒有任何照片,則會顯示一個錯誤。你能幫我解決這個錯誤嗎?類型錯誤 - 錯誤處理如果data.data未定義

$scope.checkPhoto = function(newSCPID) { 
if ($scope.newID == undefined) { 
    alert('Please input new id'); 
} else { 
    console.log($scope.newID); 
    $scope.loadingloader = true; 
    $('#loginloader').show(); 

    Service.checkPhoto($scope.newID) 
     .then(function(data) { 
      //$rootScope.loader = true; 
      $scope.checkedPhoto = data.data[0].photos; 
      //alert(data.data[0].photos); 
      if (data.data[0].photos == undefined) { 
       alert('Please input newid'); 
      } 

      // alert($scope.checkedPhoto); 
      //$rootScope.loader = false; 
      $('#loginloader').hide(); 
      $('#notif').hide(); 
      // Original Values 
     }); 
    } 
} 

如果我輸入一個沒有現有照片的新ID,則API顯示data.data [0] .photos未定義的錯誤。

enter image description here

我需要有在該特定新ID沒有現有的照片,以顯示標題。我怎樣才能做到這一點

+0

因此,這意味着data.data [0]未定義.....所以增加一個檢查,如果它是閱讀之前不確定的。 – epascarello

回答

0

要檢查的未定義的照片,所以你需要檢查這個data.data[0]不是這個data.data[0].photos==undefined,你得到這個,因爲你嘗試檢查data.data[0].photos==undefineddata.data[0]未定義已經和undefined不有財產照片。

0

在分配照片之前檢查data.data [0];

Service.checkPhoto($scope.newID) 
        .then(function(data){ 
         //$rootScope.loader = true; 
         if(data.data[0]) { 
          $scope.checkedPhoto=data.data[0].photos; 

          if(data.data[0].photos==undefined) 
          { 
           alert('Please input newid'); 
          } 
          $('#loginloader').hide(); 
          $('#notif').hide(); 
          // Original Values 
         } 

        } 
       ); 
0

看起來像data.data應該是一個數組。所以最好在你嘗試操作它的項目之前檢查數組是否爲空。

.then(function(data){ 
    if (data.data.length && data.data[0].photos) { 
     $scope.checkedPhoto = data.data[0].photos; 
    } else { 
     alert('Please input newid'); 
    } 
    $('#loginloader').hide(); 
    $('#notif').hide(); 
} 
0

寫,你可以用你喜歡這個整個應用程序的公共功能。

function isUndefinedOrNull(val) { 
    return angular.isUndefined(val) || val === null || val === ''; 
} 

在執行工作之前檢查您的值。這裏是下面的例子:

if(!isUndefinedOrNull(data.data && data.data[0].photos)) 
{ 
    alert('Please input newid'); 
} 
+0

一個稱爲'isUndefinedOrNull'的函數也許不應該檢查一個空字符串,或者被重命名爲'isUndefinedOrNullOrEmpty' ... –

+0

@MikeMcCaughan,謝謝 – Shohel

-1

您可以在try{} ... catch(e){}塊包裹。

Service.checkPhoto($scope.newID) 
    .then(function(data){        
     try { 
      $scope.checkedPhoto=data.data[0].photos;      
     } catch(e) { 
      // handle error here 
     } 

     if (!$scope.checkedPhoto) { 
      // no existing photo 
     } 
    } 
); 
+0

這將捕獲任何類型的異常,並且其他錯誤可以隱藏在那之後。明確檢查是否存在會更好。 – davekr