2016-12-27 161 views
0

我有隨機生成的id元素,我的問題是我如何從控制器訪問它,我的代碼是這樣的。如何使用angular.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」)通過,那麼它的工作...

+0

在AngularJS框架中,element even ts通過使用Angular指令(核心指令或自定義指令)綁定到函數。有關更多信息,請參閱[AngularJS開發人員指南 - 創建自定義指令](https://docs.angularjs.org/guide/directive)。由於指令附加到元素本身,因此不需要知道元素ID。 – georgeawg

回答

0

這是因爲<div id={{$ctrl.componentId}}></div>self.componentId = '#' + Math.random().toString();後immidiately評估,但是當角開始消化週期

我看到了兩個解決方案你的問題:內部$timeout要麼綁定,這將推遲,直到消化週期開始,或添加class到你的元素,以便它可以在設置之前綁定其id

如果我是你,我會做的第二種方式

+0

它不工作,我的問題是我不知道如何通過動態字符串(元素ID)在這裏angular.element(HERE) –

+0

還有您的代碼的另一個問題,HTML中的'ID'不能以數字 – pwolaq

+0

仍然開始不工作... –

相關問題