指令重复使用时将创建多个绑定
Multiple bindings are being created when directive reused
我正试图让一个无穷大加载指令发挥作用。所以我为窗口滚动事件创建了一个绑定,如下所示。
angular.element($window).bind('scroll',function()
{
_onScroll($scope);
});
在我的_onScroll
方法中,我像这样登录到控制台的滚动位置。
var $wnd = angular.element($window);
var pageTop = $wnd.scrollTop() + $wnd.height();
var markerTop = $loadMore.offset().top;
console.log('pageTop: '+pageTop+' markerTop: '+markerTop);
除非我导航到应用程序的另一个部分,然后返回到带有无穷大指令的页面,否则这是有效的。
问题是_onScroll
被称为重复次数。每次我导航回无穷大指令时,都会向_onScroll
添加一个额外的调用
例如;
我第一次看到控制台。
pageTop: 300 markerTop: 1000
pageTop: 600 markerTop: 1000
pageTop: 900 markerTop: 1000
第二次,我将看到每个滚动事件打印两行,如下所示。
pageTop: 300 markerTop: 1000
pageTop: 300 markerTop: 1000
pageTop: 600 markerTop: 1000
pageTop: 600 markerTop: 1000
pageTop: 900 markerTop: 1000
pageTop: 900 markerTop: 1000
等等…
angular.element($window).bind(..)
似乎是持久的,当指令不再使用时,我需要以某种方式解除它的绑定。
我该怎么做?需要注意的是,这个指令没有一个独立的作用域,所以我不能看着作用域被破坏。
您可以绑定到指令中的jQuery destroy事件:
element.on('$destroy', function() {
// unbind
});
相关文章:
- 如何在动态创建的节点上绑定函数
- Knockout绑定是膨胀的html(表单元格),如何使用javascript创建绑定或从父元素绑定
- 事件绑定到动态创建的元素
- D3.js如何只创建一个绑定到多个数据项的数据集的元素
- 动态创建的DOM元素上的jQuery事件绑定
- AngularJS -- 创建自定义数据绑定和 ng-repeat
- 如何使用角度两个绑定来动态创建的剑道网格
- 如何让 AngularJS 选取在 JavaScript 中创建的动态绑定
- EmberJS - 在创建对象后添加绑定
- 如何将函数绑定到使用链接函数创建 HTML 的角度指令
- 聚合物 - 将事件绑定到动态创建的元素
- Input.checked创建需要绑定到输入的Dynamic元素
- 在页面重新加载后绑定事件,并仅使用Knockout.js、html和js创建新的html元素
- 创建一个计算值数组,该数组绑定到AngularJS中的其他输入
- 如何在SapUi5中手动创建绑定
- 有没有办法为 node.js 的 golang 库创建绑定
- Angular 指令内部 HTML 重新编译,动态创建绑定属性
- 创建绑定生成的obj的新实例
- 如何创建绑定到变量的AngularJS指令
- 剑道UI -在另一个绑定中创建绑定