Angularでd3ディレクティブを実装しようとしていますが、視覚的に何も起こらず、コンソールにエラーがスローされないため、難しいです。
ここに私の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
非常に最初にその内部にあり、それも表示されませんでした。簡単なものがないですか?
編集:
上の行を次のように変更してみました
angular.module('myApp.directives', ['d3'])
.directive('d3-bars', ['d3Service', function($window, d3Service) {
しかし、それもうまくいきませんでした。とにかく、2つのヘッダーの違いはわかりません...
ディレクティブ名が間違っている可能性があります。 Angularディレクティブは通常、キャメルケースです。HTMLの場合はハイフンが付けられるため、HTMLではngClass
はng-class
に変わります。
少なくとも、ディレクティブで-
またはその他の文字を使用しようとしても、機能しません。
妥当性については、このGoogleグループの投稿を確認してください: ディレクティブでダッシュを使用
また、ここにドキュメントがあります: ディレクティブ-一致するディレクティブ
また、JoshSGmanのコメントで提案された変更を加えることもできます。
.directive('d3Bars',['$window', 'd3Service', function($window, d3Service) {
ディレクティブの名前が問題です。 Angularは、JavaScript内のディレクティブと一致する前に、html内のディレクティブの名前を正規化します。正規化プロセスは2つのステップで機能します。
したがって、JavaScriptでのディレクティブの正しい名前はd3Bars
になります。それをそれに変更すれば動作するはずです。
詳細は https://docs.angularjs.org/guide/directive#matching-directives を参照してください。
ディレクティブがまったく機能しないようにするもう1つのことが起こりました
one module
にディレクティブがあり、you created a new module
新しいディレクティブを使用しますが、コピーと貼り付けが原因ですyou forget change Module name
、このようにAngulerJs
どういうわけかwill
remove the first directive
そう
すべてのモジュールに一意の名前が付いていることを確認してください
link
プロパティを定義するのを忘れたときも、同様の動作がありました。
コンソールにはエラーはありません。