私は単純なDOM階層を持ち、特定の要素を取りたい(キャンバスのすべての要素が必要です)。これは、このディレクティブの全体のテンプレートです:ディレクティブのリンク関数からDOM階層内の要素を取得する[AngularJS]
<div id='charts-container'>
<div class='chart-wrapper' ng-repeat='chart in getNumberOfCharts() track by $index'>
<canvas id="{{'exam-chart-' + $index}}" class='chart-canvas'></canvas>
</div>
</div>
私は#チャートコンテナ要素内のすべてのキャンバスでリストを作成したいが、私はちょうどことはできません。
link: function (scope, element, attributes, controller) {
var look = element.find('#chart-canvas');
$log.debug(look);
}
そして私はthis要素を得るが、私はここからすべてのチャートのラッパー要素を取得する方法がわからない:これは私がリンク関数の内部でやろうとしているものです。
私はlook.context.children
を実行しようとしましたが、空のリストを返しましたが、同時にリストに値が設定されているかのように私に示しました。ここにはimageです。このリストのインデックスにアクセスしようとすると、未定義の値が返されます(空リストなので、これは問題ありません)。
これを達成する最良の方法は何ですか?このテンプレートのすべてのキャンバス要素を取得するには? (そのうちの15があります)。ありがとう!
--- UPDATE ---私は私がテンプレートで使用しているNG-繰り返し属性を削除した場合、それが動作することを実現
!しかし、ng-repeat属性がない場合に限り、ng-repeatが必要です。
element.find('.chart-canvas')
canvas要素を取得するように管理します。
これは、ng-repeatを使用する場合の共通の問題ですか。この場合、特別扱いはありますか?
これはうまくいくと思います。あるいはキャンバスの要素をすべて見つけることができます。私はこの答えを上げます。 – Maccurt
私は誤ってクラスの代わりにIDセレクターを使用したように見えますが、それに気付いてくれてありがとう。それでも、成功はありません。 'element.find( '。chart-canvas');':[戻り値](http://i.imgur.com/Q6KeO66.png) –
を呼び出すときに、 - javascriptのgetElementByTagName ...?このように使用する:element.getElementByTagName( "CANVAS");それはすべてのキャンバス要素を返す必要があります... PS:このメソッドを使用するには要素[0]を置く必要があるかもしれません... –