Шаблон директивы AngularJS не отображается

У меня есть простая директива, которая теперь просто отображает текст:

app.directive("exampleText", function() {
    return {
        restrict: "E",
        template: '<div>hello!</div>'
    }

});

В моем index.html у меня есть это:

<div class="container" ng-app="customerPortalApp">
  <div ui-view></div>
  <exampleText></exampleText>
</div>

exampleText находится за пределами моего ui-view, поскольку это касается моих маршрутов и работает правильно. Но его мое понимание шаблона директивы должно отображаться как есть. Я что-то пропустил?

Ответы

Ответ 1

С директивой с именем:

app.directive("exampleText", ...

HTML должен быть:

<example-text></example-text>

Из документации:

Angular нормализует тег элемента и имя атрибута для определения какие элементы соответствуют этим директивам. Обычно мы ссылаемся на директивы по их регистрозаменному имени camelCase с учетом регистра (например, ngModel). Однако, поскольку HTML нечувствителен к регистру, мы ссылаемся на директивы в DOM по нижним регистрам, обычно используя атрибуты с разделителями тире на элементах DOM (например, ng-model).

Ответ 2

Поскольку tasseKATT отметил, что название директивы должно оставаться как "exampleText" и элемент html должен быть <example-text>

Я думал, что демо может помочь демо

шаблон:

<div ng-app="myApp">
    <sample-text></sample-text>
</div>

директива:

var app = angular.module('myApp', []);
app.directive('sampleText', function () {
    return {
        restrict: "E",
        template: '<div>Some sample text here.</div>'
    };
});