web-dev-qa-db-ja.com

AngularJS:IDでDOM要素を取得する方法

サンプル

これを検討してください Plunkr

必要なもの

IDで要素を取得できるようにする必要があります。

サンプルコードは、現在のビューに存在する任意のDOM要素にcssクラスを割り当てることができる必要があります。

これは、コントローラーの$ scopeによって提供されるソースオブジェクトを使用して確認する必要があります。このソースオブジェクトは、ビューの入力要素よりも多くのプロパティを持つ場合があります。

したがって、各オブジェクトキーをループして、対応するDOM要素が存在するかどうかを確認します。その場合は、その値を検証します。

質問

AngularJSのみを使用して、IDで要素を取得するにはどうすればよいですか(jQueryは許可されていません!!)?

特にPlunkrの場合、(実際に)機能するためにこの関数が必要です。

self.IsFieldCurrentlyActive = function(field){
  // Should be (in pseudocode):
  // var inputElement = angular.find(field);
  // return (inputElement != 'undefined');

  // Sample only
  var idx = field.indexOf('Unused');
  return idx == -1;
};

そして、これ(基本的に同じ):

self.GetElementByKey = function(key)
{
  // Should be (in pseudocode):
  // var inputElement = angular.find(field);
  // return inputElement;

  // Sample only
  return null;
}

更新

申し訳ありませんが、重要な要件を追加するのを忘れていました。同じフォーム(および同じID)が複数出現する可能性があるため、一意のIDを想定するメカニズムは使用できません。したがって、Angularスコープを尊重する必要があります。

ありがとう!

5
Spikee

純粋なJSでは、document.querySelector('#myID');を実行できます

またはangular angular.elementを使用:angular.element(document.querySelector('#myID'));

12
Lauromine

代わりにangular.element($('#myElement'));を試してください