Ответ 1
Детали, подобные этому, не всегда доступны в документации - вы должны прочитать источник. Я заглянул, и кажется, что (по состоянию на 2014-11-24) они работают одинаково. Оба инициируют создание единой директивы для изменения значения при необходимости (директива курсивной интерполяции генерируется "на лету" ).
Обе директивы оценивают выражения, участвующие в каждом $digest
, как и все остальное. Основное различие заключается в том, что в то время как ng-bind не выполняет никакой дополнительной обработки по значению, с помощью завитушек весь интерполированный текст пересчитывается на каждый дайджест. По существу строка построена с использованием $interpolate
и сравнивается с предыдущим значением (это происходит в недрах $digest
). Ни один из способов не обновит DOM, если значение (либо простое значение с ng-bind
, либо интерполированный результат с коленками) не изменилось.
Для меня принятый ответ по этому вопросу является более веской причиной для использования ng-bind
, то есть вы можете использовать его для предотвращения видимой вспышки тегов шаблона до Angular загружает и компилирует их, не прибегая к хакам, таким как ng-cloak.
В зависимости от переменных могут также быть случаи, когда курчавая интерполяция на самом деле более эффективна. Одна из ситуаций, о которых я могу думать, заключается в том, что при использовании ng-bind вместо интерполяции требуется, чтобы вы создали много лишних элементов <span>
, и это подсказывает весы в другом направлении. Интерполяционное выражение также вызывает создание единого наблюдателя для всей строки, независимо от того, сколько переменных вы используете, в отличие от ng-bind, который создает один наблюдатель для каждого экземпляра.
Но, как всегда, не оптимизируйте производительность раньше, и если да, то профиль, чтобы узнать, какая часть действительно имеет значение.