Comments 13
Для меня еще было неожиданностью, что пусть массив тоже будет интерпретирован как
false
значение.0
так ведь не просто массив, а пустой массив, это вполне удобно когда нужно вывести сообщение на пустом массиве, который позже наполнится через ресурс
+2
Это известная особенность JavaScript:
+2
Это, в принципе, задокументировано, но во внезапном месте (api/ng/directive/ngHide), и нет четкого указания, что это относится ко всем внутренним директивам.
По-хорошему, конечно, это должно быть написано где-то в guide/expression.
Зачем так сделано? Думаю, для более удобного комбинирования с input… ng-value/ng-false-value. Две директивы, думаю, не надо — "!!" написать не проблема. Но надо, конечно, об этой особенности помнить.
По-хорошему, конечно, это должно быть написано где-то в guide/expression.
Зачем так сделано? Думаю, для более удобного комбинирования с input… ng-value/ng-false-value. Две директивы, думаю, не надо — "!!" написать не проблема. Но надо, конечно, об этой особенности помнить.
+3
Этот момент описан в официальной документации к директиве ng-show
Наверно, просто косяк документации. Я думаю, что если это нормально описано в документации и ты об этом помнишь, то это удобно, почему бы и нет? Но если об этом не знать, то безусловно, это головная боль. На один раз. Пока не разберешься. Потом знаешь и пользуешься.
Note: Here is a list of values that ngShow will consider as a falsy value (case insensitive):
«f» / «0» / «false» / «no» / «n» / "[]"
Наверно, просто косяк документации. Я думаю, что если это нормально описано в документации и ты об этом помнишь, то это удобно, почему бы и нет? Но если об этом не знать, то безусловно, это головная боль. На один раз. Пока не разберешься. Потом знаешь и пользуешься.
0
Хочу обратить внимание, что он не просто скрывает элемент, он изымает целиком узел из DOM или вставляет на это место его копию, в то время как
https://code.angularjs.org/1.2.16/docs/api/ng/directive/ngIf
show|hide
только меняют свойство CSS visibility
. В момент удаления скоуп элемента уничтожается, и создаётся новый в момент восстановления. Иногда это критично. Часта ошибка когда пытаешься показать динамический элемент, загруженный позже, а ничего не происходит — не учтено поведение ngIf
https://code.angularjs.org/1.2.16/docs/api/ng/directive/ngIf
+1
UFO just landed and posted this here
Значения
0
и []
в качестве false
вполне допускаю. Остальные значения выглядят несколько надуманно. Судя по опыту топикстартера, эти неожиданные значения не соответствуют false
в предметной области проекта.+1
Интересно, что вы будете делать, когда ВНЕЗАПНО! потребуется локализовать «Yes|No|After %N% days|...»? Будете жаловаться, что ng-if неправильно понимает «Да|Нет» или будете старательно выискивать и переписывать все места, где использовалась такая конструкция?
+1
Sign up to leave a comment.
AngularJS: нестандартное поведение ng-if