2016-12-27 162 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

仍然开始不工作... –

相关问题