2016-09-28 3 views
1

Я полностью ненавижу добавлять имена тегов на основе имен компонентов в своих приложениях. Я ненавижу это делать:Название элемента углового компонента для div

<hero-detail hero="ctrl.hero"></hero-detail> 

Невозможно использовать обычные теги div вместо этого? Что-то вроде этого?

<div id="hero-detail" data-hero="ctrl.hero"></div> 

Почему это не работает?

ответ

1

ваш ответ здесь https://docs.angularjs.org/guide/directive

Они говорят:

типов Директивы $ компилировать могут соответствовать директивам на основе имен элементов, атрибутов, имена классов, а также комментарии.

Все директивы, указанные в угловом выражении, соответствуют имени атрибута, имени тега, комментариям или имени класса. Ниже демонстрируют различные способы, которыми директивы (Mydir в данном случае) можно ссылаться изнутри шаблона:

<my-dir></my-dir> 
    <span my-dir="exp"></span> 
    <!-- directive: my-dir exp --> 
    <span class="my-dir: exp;"></span> 

Best Practice: Предпочитает с помощью директив через имя тега и атрибуты отзыва и имена классов. Выполнение этого обычно упрощает определение того, какие директивы соответствуют данному элементу.

Наилучшая практика: директивы комментариев обычно использовались в местах, где DOM API ограничивает возможность создания директив, которые охватывают несколько элементов (например, внутри элементов). AngularJS 1.2 представляет проблему ng-repeat-start и ng-repeat-end как лучшее решение для этой проблемы. Разработчикам рекомендуется использовать это по специальным директивам комментариев , когда это возможно.

+0

Я не говорю о директивах я говорю о компонентах: https://docs.angularjs.org/guide/component – chitzui

+0

это тот же подход, поскольку компоненты директива – DMCISSOKHO

+0

@DMCISSOKHO: Есть различия, связанные с этим. См. Https://docs.angularjs.org/guide/component. 'ограничивать' Да по директивам, но нет на компонентах (только для элементов) – DeepSpace101

2

почему нет, это также возможно. в основном тремя способами мы можем указать директивы. т.е. Element, Attribute, Classname

, но в то время как создать директиву можно указать

restriction : AE 

или whaterver вам нужно,

, то вы можете использовать как этот

<div id="hero-detail" hero-detail data-hero="ctrl.hero"></div> 

больше внимательно изучите документы. directives

2

You can technically ограничивает компонент атрибутом, как это делается с директивами, поскольку компоненты являются специальным видом директивы. (Я изменил случайную скрипту, найденную в google)

EDIT: это работает на более старых версиях 1.5, но не на более новых. Так что читайте дальше ...

Но официально you cannot, и вы не должны этого делать. Если вы выбираете архитектуру компонента, вы должны придерживаться правил, или вещи быстро выйдут из рук.

Наличие компонентов в виде элементов html - это чистая и хорошая практика. Вы должны научиться любить это.

+0

Как можно придумать имена TAG как W3C? – chitzui

+0

@chitzui, конечно, соответствует https://www.w3.org/TR/2016/WD-custom-elements-20161002/#custom-elements, и это база веб-компонентов. – gyc

+0

Хорошо, WD, но спасибо, вы, вероятно, правы, мне придется изменить свою точку зрения на это. Благодаря :) – chitzui

Смежные вопросы