2016-12-27 7 views
0

ランダムに生成されたIDを持つ要素があります。私の質問はコントローラからアクセスできる方法です。angle.element()を使用する方法。動的に生成された要素IDとバインド

self.componentId = '#' + Math.random().toString(); 

angular.element(self.componentId).bind('scroll', function() { 
    if (angular.element(this).scrollTop() + angular.element(this).innerHeight() >= angular.element(this)[0].scrollHeight) { 
     console.log('testing 123'); 
    } 
}); 

とhtml要素に私は

<div id={{$ctrl.componentId}}></div> 

を持っている私の質問は、私はそれがイベントをスクロール表示させるために上記の機能に変更するために必要なもの、シンプルです。私はangular.element(「#hardcodedId」)に渡すと、それは...仕事<div id={{$ctrl.componentId}}></div>self.componentId = '#' + Math.random().toString();後immidiatelyに評価されていないためだが、角度がダイジェスト・サイクルを開始したとき

は、私はには2つのソリューションを参照してください

+0

AngularJSフレームワークでは、要素evenコアディレクティブまたはカスタムディレクティブのいずれかのAngularディレクティブを使用して関数にバインドされています。詳細については、[AngularJS Developers Guide - カスタムディレクティブの作成](https://docs.angularjs.org/guide/directive)を参照してください。ディレクティブは要素自体に関連付けられているため、要素idを知る必要はありません。 – georgeawg

答えて

0

問題:$timeout内部のバインドのいずれか、サイクルが始まるダイジェスト、または私があなただったら、私はそれを第二の方法にしてくださいそのid

を設定する前にバインドすることができるように、あなたの要素にclassを追加するまで延期する

+0

それは動作していません、私の問題は、ここで動的文字列(要素id)を渡す方法がないと思っていますangular.element(ここ) –

+0

コードで別の問題があります、HTMLの 'id'は数字で開始できません – pwolaq

+0

うまくいきません... –