Есть ли хороший способ сбрасывать или проверять результаты выражения? Иногда, когда я делаю
{{some_expression}}
на странице, где должен появиться результат этого выражения, ничего не отображается. Как определить, вернули ли выражение null
, a undefined
или пустую строку ''
?
Если это обычный объект, он будет показывать приятное для программиста представление объекта, что отлично:
{{ {'a': 1} }}
Но если вы попытаетесь проверить выражение, которое оценивает значение null, undefined или '', все они неотличимы друг от друга!
{{null}}
{{undefined}}
{{''}}
Итак, как вы можете определить, какой из них был?
Я попытался использовать JSON.stringify
:
{{ JSON.stringify(null) }}
но JSON
кажется недоступным из выражения Angular, потому что это метод из window
, а не свойство области (см. связанный вопрос о доступе к методам из окно).
Я попытался использовать typeof
:
typeof {}: {{ typeof {'a': 1} }}
но это приводит к ошибке:
Error: [$parse:syntax] Syntax Error: Token '{' is an unexpected token at column 9 of the expression [ typeof {'a': 1} ] starting at [{'a': 1} ].
Итак, как я могу заставить его выгрузить значение в шаблон, используя что-то вроде JSON.stringify
(... или console.log
)?
Вообще говоря, есть ли хороший способ отлаживать выражения Angular, отличные от проб и ошибок? Поскольку Angular выражения настолько "прощаются", они, похоже, не вызывают ошибок; они просто проглатывают ошибки и возвращают undefined
:
В JavaScript пытается оценить свойства undefined. ReferenceError или TypeError. В Angular оценка экспрессии прося undefined и null.
Но, не видя какого-либо сообщения об ошибке, как вы знаете, с какой частью выражения Angular возникли проблемы?