3

私はAngularが初めてです。私はディレクティブを学ぼうとしていました。ディレクティブのlink関数で要素をログに記録し、それが配列であることを確認します。なぜそれは配列ですか?

<mouse-enter>HI</mouse-enter>

JS:

angular.module('custom.directive').directive('mouseEnter', function () {
    return {
        restrict: 'E',
        link: function (scope, element) {
            console.log(element);// this line prints an array!
            element[0].onmouseover = function () {
                console.log('Mouse Entered!');
            };
        }
    }
});

その場合、この配列の長さは 1 より大きくなる可能性があります!!

4

1 に答える 1

4

Angular の jQlite セレクターは、jQuery が使用可能な場合は jQuery 関数のエイリアスです。そうでない場合、jQlite は Angular に組み込まれた jQuery の小さなサブセットになります。

したがって、jQlite または jQuery セレクターは常に配列を返します。

https://docs.angularjs.org/api/ng/function/angular.element

次の DOM 構造を検討してください。

<div id="test">
    <div class="foo bar" id="dom-element-1">Hello</div>
    <p>ignore me</p>
</div>

<span class="foo" id="dom-element-2">Hello again</div>

これで、または のいずれかを実行$(".foo")すると、ID dom-element-1およびdom-element-2angular.element(document.querySelectAll(".foo"))を持つ 2 つの dom 要素の配列となる jQlite または jQuery インスタンスが取得されます。

于 2015-04-21T05:08:56.087 に答える