J'essaie d'implémenter une directive d3 dans Angular, et c'est difficile car rien ne se passe visuellement et aucune erreur n'est générée sur la console.
Voici ma directive d3:
myApp.directive('d3-bars', ['d3Service', function($window, d3Service) {
return {
restrict: 'EA',
scope: {},
link: function(scope, element, attrs) {
// More code below ....
Voici mon HTML:
<d3-bars bar-height="20" bar-padding="5"></d3-bars>
Au début, j’imaginais qu’il ne s’agissait pas d’ajouter une svg
, car l’inspection de l’élément correspond à ce à quoi il ressemble, mais je ne pense pas que la directive fonctionne même du tout. J'ai collé un console.log
à l'intérieur tout au début et il n'apparaissait pas non plus. Est-ce que je manque quelque chose de simple?
MODIFIER:
J'ai essayé de changer la ligne du haut pour
angular.module('myApp.directives', ['d3'])
.directive('d3-bars', ['d3Service', function($window, d3Service) {
Mais cela n'a pas fonctionné non plus. Je ne sais même pas quelle est la différence entre les deux en-têtes de toute façon ...
Votre nom de directive peut être faux. Les directives Angular sont généralement camelées. Et quand dans le HTML, ils sont enivrés. alors ngClass
se transforme en ng-class
dans le code HTML.
Du moins, lorsque j'ai essayé d'utiliser -
ou d'autres caractères dans mes directives, cela n'a pas fonctionné.
Consultez ce message du groupe Google pour une certaine validité: en utilisant un tiret dans la directive
Voici également les documents: Directives - Directives correspondantes
Vous voudrez également apporter la modification suggérée dans les commentaires de JoshSGman:
.directive('d3Bars',['$window', 'd3Service', function($window, d3Service) {
la dénomination de votre directive est le problème. Angular normalise les noms de directives dans le code HTML avant de les faire correspondre aux noms en JavaScript. Le processus de normalisation fonctionne en deux étapes:
Donc, le nom correct de votre directive en JavaScript serait d3Bars
. Changez-le en cela et cela devrait fonctionner.
Voir https://docs.angularjs.org/guide/directive#matching-directives pour plus d'informations.
J'ai eu un comportement similaire lorsque j'ai oublié de définir la propriété link
.
Aucune erreur dans la console, rien.