2016-05-05 64 views
-1

在您審視這個問題之前,我確切地知道是什麼導致了這個錯誤以及爲什麼。我有一個對象,我正在通過檢查它的長度來有效地測試它是否爲空;當數組爲空時,每調用一次$scope.$on('$ionicView.enter')就會導致大約30個錯誤。評估價值Javascript時刪除錯誤

有沒有辦法阻止這些錯誤不斷被拋出/有沒有更好的方法來測試一個數組是否充滿了某些東西?

JS:

$scope.checkLeague = function() { 
     if ($scope.favs.length > 0){ 
      return false; 
     } 
     return true; 
    }; 

錯誤:

null is not an object (evaluating '$scope.favs.length') 

編輯:還具有其他調查了問題,$scope.favs初始化爲null嘗試和制止這種錯誤,但被設置爲稍後在代碼中爲空數組,因爲這是一個REST響應。問題仍然在於成功捕獲一個總是被實例化但可能爲空的數組。將數組記錄到控制檯將始終生成[]

+0

也許檢查空... –

+0

已經試過了,它總是爲真值 –

+0

你檢查$範圍呢? –

回答

0

嘗試查看$ scope.favs前值:

$scope.checkLeague = function() { 
     if ($scope.favs && $scope.favs.length > 0){ 
      return false; 
     } 
     return true; 
    }; 
+0

問題是'$ scope.favs'是在運行時創建的,所以它在技術上始終存在,是否填充。 –

0

你可以嘗試這樣的事:

$scope.checkLeague = function() { 
    if ($scope.favs.hasOwnProperty("length") && $scope.favs.length > 0){ 
     return false; 
    } 
    return true; 
}; 
0

length屬性爲 「0」 或null值並不一定意味着該對象是空的。檢查這件事

var a = [1,2,3,4]; 
a.key1 = "test"; 
a.length; // <- 4 
Object.keys(a); // <- ["0", "1", "2", "3", "key1"] 
a.length = null; 
a; // <- []; 
Object.keys(a); // <- ["key1"] 
Object.getOwnPropertyNames(a); // <- ["length", "key1"] 

您可能需要檢查Object.keys().length

+0

不幸的是,我所得到的只是'錯誤:null不是一個對象(評估'Object.keys($ scope.favs)')' –

+0

顯然沒有這樣的'收藏'的東西。你可能會考慮看看http://stackoverflow.com/questions/14207922/javascript-error-null-is-not-an-object – Redu