2017-01-05 61 views
1

我有一個這樣的annidate變量。未定義annidate可變 - 角

$scope.a = { b: {c : 1} }; 
    var test = $scope.a.b.c; 
     // test == 1 
    $scope.a = {} 
    var test = $scope.a.b.c; 
     // ERROR 

我想測試變量將爲空或未定義。

我怎麼能不填誤差測試變量?

一些建議嗎?

我正在尋找一個聰明的辦法

不僅

if(angular.isDefinied($scope.a) && angular.isDefinied($scope.a.b) && angular.isDefinied($scope.a.b.c)) 
+0

那麼你的問題是什麼? –

+0

我如何填寫無誤測試變量? –

回答

1

你可能想要做這樣的事情:

var test = ($scope.a && $scope.a.b && $scope.a.b.c) ? $scope.a.b.c : undefined; 
0

如果您沒有使用之前定義的值它,那麼肯定會拋出一個錯誤。您必須定義或者您必須檢查它是否已定義。否則,您無法解決錯誤。 var test只有在沒有錯誤時纔會得到一個值。現在,它取決於你決定和使用智能方式

var test = $scope.a?((typeof($scope.a.b)=="object" && $scope.a.b.c)?$scope.a.b.c:(typeof($scope.a)=="object" && $scope.a.b)?$scope.a.b:null):null 
+0

這是錯的。 http://jsfiddle.net/Mistalis/fgc21e86/ – Mistalis

+0

看到我更新的答案 –

+0

Humhum ......從這樣一個問題:「**我正在尋找一個聰明的辦法**」。 – Mistalis