Необходимость атрибута value в директиве 'scope'

Я проходил процесс создания директивы. Пройдя несколько взлетов и падений, я начал создавать директиву (виджет) и завершал различные атрибуты, которые примет директива.

Я использовал различные доступные опции, такие как атрибут, привязка, оценка, выражение и т.д.

Я понял, что если вы хотите создать общий компонент, вы никогда не сможете сказать, как люди передадут значения компоненту.

Вот иллюстрация...

Вы создаете новый элемент. Скажите

<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>

обратите внимание на дополнительные одинарные кавычки.

Итак, насколько я могу судить, оценки покрывают то, что делает атрибут. И, используя оценку, кажется, лучший выбор, чем просто атрибут, поскольку он охватывает больше сценариев!

Если кто-то может объяснить, почему атрибут существует в первую очередь? Больше вариантов = больше путаницы..:)

Ответы

Ответ 1

Мы хорошо знаем об этой путанице и будем ее очищать в будущем.