Подтвердить что ты не робот

Директива AngularJS не называется

Я пытаюсь реализовать директиву d3 в Angular, и это сложно, потому что визуально ничего не происходит, и на консоли не возникают ошибки.

Здесь моя директива d3:

myApp.directive('d3-bars', ['d3Service', function($window, d3Service) {
  return {
    restrict: 'EA',
    scope: {},
    link: function(scope, element, attrs) {

// More code below ....

Вот мой HTML:

<d3-bars bar-height="20" bar-padding="5"></d3-bars>

Сначала я подумал, что это не добавление svg, потому что проверка элемента на то, как он выглядит, но теперь я не думаю, что директива даже работает вообще. Я вставил console.log внутри него в самом начале, и он тоже не появился. Я пропустил что-то простое?

EDIT:

Я попытался изменить верхнюю строку на

angular.module('myApp.directives', ['d3'])
.directive('d3-bars', ['d3Service', function($window, d3Service) {

Но это тоже не сработало. Я даже не знаю, в чем разница между двумя заголовками...

4b9b3361

Ответ 1

Название вашей директивы может быть неправильным. Директивы Angular обычно имеют верблюд. И когда в HTML они загипнотизированы. поэтому ngClass превращается в ng-class в HTML.

По крайней мере, когда я пытался использовать - или другие символы в моих директивах, он не сработал.

Обратите внимание на это сообщение в Google Group за достоверность: используя тире в директиве

Также есть документы: Директивы - соответствующие директивы

Вы также захотите внести изменения, которые были предложены в комментариях JoshSGman:

.directive('d3Bars',['$window', 'd3Service', function($window, d3Service) {

Ответ 2

Именование вашей директивы - проблема. Angular нормализует имена директив в html, прежде чем он сопоставляет их с именами в JavaScript. Процесс нормализации работает в два этапа:

  • Сбросьте x- и данные - из передней части элемента/атрибутов.
  • Преобразуйте имя, обозначенное двоеточием, дефисом или подчёркиванием, в camelCase.

Итак, правильное имя для вашей директивы в JavaScript будет d3Bars. Измените его на это, и он должен работать.

Подробнее см. https://docs.angularjs.org/guide/directive#matching-directives.

Ответ 3

У меня было подобное поведение, когда я забыл определить свойство link.

Нет ошибок в консоли, nothin.