2015-11-20 2 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

Would'nt 'if ($ rootScope.user.userMessage)' вывести ошибку, если '$ rootScope.user' не определено? –

+0

да, мы должны сначала проверить объект, а затем внутренний элемент объекта: я отредактировал ответ – Arun

Смежные вопросы