如何使用angular.element()。bind与动态生成的元素id

时间:2016-12-27 13:12:08

标签: jquery angularjs

我有随机生成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(&#39; #hardcodedId&#39;),那么它可以工作......

1 个答案:

答案 0 :(得分:0)

那是因为在<div id={{$ctrl.componentId}}></div>之后self.componentId = '#' + Math.random().toString();不会被立即评估,但是当角度开始于摘要周期时

我看到你问题的两个解决方案:在$timeout内部绑定,它将推迟到摘要周期开始,或者向你的元素添加class,以便在设置它之前绑定它id 1}}

如果我是你,我会采取第二种方式