私はディレクティブで作業していますが、パラメーターelement
を使用してクラス名でその子を見つけるのに問題があります。
.directive("ngScrollList", function(){
return {
restrict: 'AE',
link: function($scope, element, attrs, controller) {
var scrollable = element.find('div.list-scrollable');
...
}
};
})
タグ名で見つけることができますが、コンソールで見ることができるようにクラス名で見つけることができません:
element.find('div')
[<div class="list-viewport">…</div>,<div class="list-scrollable">…</div>]
element.find('div.list-scrollable')
[]
そのようなことをする正しい方法はどれでしょうか? jQueryを追加できることは知っていますが、それでやり過ぎではないかと思っていました。
jQlite(angularの「jQuery」ポート)は、クラスによるルックアップをサポートしていません。
1つの解決策は、アプリにjQueryを含めることです。
もう1つはQuerySelector
またはQuerySelectorAll
を使用しています。
link: function(scope, element, attrs) {
console.log(element[0].querySelector('.list-scrollable'))
}
element
配列の最初の項目を使用します。これはHTML要素です。 element.eq(0)
は同じ結果になります。
リンク関数で、次を実行します。
// link function
function (scope, element, attrs) {
var myEl = angular.element(element[0].querySelector('.list-scrollable'));
}
また、リンク関数では、$
を使用してscope
変数に名前を付けないでください。これは、組み込みのangularサービスに固有のangular規則であり、独自の変数に使用するものではありません。