Ответ 1
Мы хорошо знаем об этой путанице и будем ее очищать в будущем.
Я проходил процесс создания директивы. Пройдя несколько взлетов и падений, я начал создавать директиву (виджет) и завершал различные атрибуты, которые примет директива.
Я использовал различные доступные опции, такие как атрибут, привязка, оценка, выражение и т.д.
Я понял, что если вы хотите создать общий компонент, вы никогда не сможете сказать, как люди передадут значения компоненту.
Вот иллюстрация...
Вы создаете новый элемент. Скажите
<hello name="__ARGUMENT__"></hello>
Атрибут name для hello - единственная переменная в нем. Если вы дадите это общественности... это возможные сценарии, с помощью которых люди могут использовать этот компонент.
случай 1:
<hello name="angular"></hello>
случай 2:
<hello name="{{name}}"></hello>
случай 3:
<div ng-repeat="name in names">
<hello name="name"></hello>
</div>
Теперь.. для разных сценариев. Я понял различные варианты. Я не могу подумать об одном сценарии, где вам когда-либо понадобится "атрибут", поскольку его простая прямая подстановка значений из компонента в шаблон.
В определении вашей директивы, если вы определили имя как "оценивать", а не "атрибут"
если атрибут:
<hello name="angular"></hello>
если оценить:
<hello name="'angular'"></hello>
обратите внимание на дополнительные одинарные кавычки.
Итак, насколько я могу судить, оценки покрывают то, что делает атрибут. И, используя оценку, кажется, лучший выбор, чем просто атрибут, поскольку он охватывает больше сценариев!
Если кто-то может объяснить, почему атрибут существует в первую очередь? Больше вариантов = больше путаницы..:)
Мы хорошо знаем об этой путанице и будем ее очищать в будущем.