2017-01-05 7 views
1

私はそのような変数を持っています。変数の未定義の変数 - 角度

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

私はテスト変数がnullまたは未定義になります。

テスト変数をエラーなく入力するにはどうすればよいですか?

いくつかのアドバイスはありますか?

私は

スマートな方法を探していないだけで

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