2015-11-20 74 views
0

我不斷收到的

Error: undefined is not an object (evaluating '$rootScope.user.userMessage')

錯誤與此代碼:

if (typeof($rootScope.user.userMessage) === null) { 

,但如果我有在$ rootScope東西。 user.userMessage它不會崩潰。我如何執行檢查,看看這是未定義還是爲空,以便事件不會中斷?

其他的事情我已經嘗試過包括:

if (typeof($rootScope.user.userMessage) === undefined) { 
if ($rootScope.user.userMessage === undefined) { 
+0

檢查$ rootScope.user是否爲空。 –

回答

3
if($rootScope.user && $rootScope.user.userMessage){ 
    ... 
} 
0

TYPEOF不是一個函數。你必須使用這種方式

if (typeof $rootScope.user.userMessage === "undefined") { 
0

您可以表達空安全

if ($rootScope !=null && $rootScope.user!=null && $rootScope.user.userMessage != null) { 
    ... 
} 
+0

是的,必須檢查$ rootScope。 :) 這是爲什麼? – laszlokiss88

+0

這取決於你在哪裏使用$ rootScope – Vivek

+0

不必要的檢查只會使代碼不那麼幹淨。在AngularJs中注入$ rootScope並且它總是有一個值。 – laszlokiss88

0

,如果你正在檢查只未定義可以使用

angular.isDefined($rootScope.user.userMessage); 

angular.isUndefined($ rootScope.user.userMessage);

但拍的做法是使用

if($rootScope.user && $rootScope.user.userMessage){ 
    ... 
} 

它只有一個條件中檢查這兩個空,未定義或空。

+0

如果($ rootScope.user.userMessage)拋出一個錯誤,如果$ rootScope.user沒有定義? –

+0

是的,我們必須先檢查對象,然後再檢查內部對象元素:我已編輯答案 – Arun

相關問題