45

angularjs ディレクティブが注入された角度要素を持つ子 DOM 要素を見つけるのに問題があります。

たとえば、次のようなディレクティブがあります。

myApp.directive('test', function () {
    return {
        restrict: "A",
        link: function (scope, elm, attr) {
            var look = elm.find('#findme');
             elm.addClass("addedClass");
            console.log(look);
        }
    };
});

および次のような HTML:

<div ng-app="myApp">
    <div test>TEST Div
        <div id="findme"></div>
    </div>
</div>

クラスを追加することで提供される要素にアクセスできます。ただし、子要素にアクセスしようとすると、var ルックで空の配列が生成されます。

JSFiddle のデモはこちらです。

些細なことがうまくいかないのはなぜですか?

4

7 に答える 7

76

ドキュメントangular.elementから:

find()- タグ名による検索に限定

したがって、Angular で jQuery を使用していないが、その jqlite 実装に依存している場合は、elm.find('#someid').

children()contents()、および実装にアクセスdata()できるので、通常はそれを回避する方法を見つけることができます。

于 2013-02-14T00:52:28.010 に答える
27

2 つのステップで簡単に解決できます。

1- 次のように querySelector を使用して子要素に到達します。 var target = element[0].querySelector('tbody tr:first-child td')

2-次のようにして、angular.elementオブジェクトを再度オブジェクトに 変換します。var targetElement = angular.element(target)

その後、変数で予想されるすべてのメソッドにアクセスできtargetElementます。

于 2015-06-23T17:08:59.470 に答える
1

使った

elm.children('.class-name-or-whatever') 

現在の要素の子を取得する

于 2015-01-23T13:36:05.557 に答える
-3

次のように実行できます。

 var myApp = angular.module('myApp', [])
  .controller('Ctrl', ['$scope', function($scope) {
     $scope.aaa = 3432
 }])
 .directive('test', function () {
    return {
       link: function (scope, elm, attr) {
           var look = elm.children('#findme').addClass("addedclass");
           console.log(look);
        }
   };
});

<div ng-app="myApp" ng-controller="Ctrl">
   <div test>TEST Div
      <div id="findme">{{aaa}}</div>
   </div>
</div>

http://jsfiddle.net/FZGKA/133/

于 2015-06-24T13:28:46.880 に答える