From 20e8145e1b088a43d37c9832696bf3658fe83e61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=98=89=E6=B6=B5?= Date: Mon, 16 Oct 2017 17:27:35 +0800 Subject: [PATCH] [bugfix] Waterfall bind event repeated --- packages/waterfall/directive.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/waterfall/directive.js b/packages/waterfall/directive.js index c25f53ea3..16d2e4902 100644 --- a/packages/waterfall/directive.js +++ b/packages/waterfall/directive.js @@ -6,6 +6,11 @@ const OFFSET = 300; // 绑定事件到元素上 // 读取基本的控制变量 function doBindEvent() { + if (this.el[CONTEXT].binded) { + return; + } + this.el[CONTEXT].binded = true; + this.scrollEventListener = Utils.debounce(handleScrollEvent.bind(this), 200); this.scrollEventTarget = Utils.getScrollEventTarget(this.el); @@ -52,7 +57,7 @@ function handleScrollEvent() { needLoadMoreToLower = elementBottom - targetVisibleHeight < this.offset; } if (needLoadMoreToLower) { - this.cb['lower'] && this.cb['lower']({ target: scrollEventTarget, top: targetScrollTop }); + this.cb.lower && this.cb.lower({ target: scrollEventTarget, top: targetScrollTop }); } // 判断是否到了顶 @@ -64,7 +69,7 @@ function handleScrollEvent() { needLoadMoreToUpper = elementTop + this.offset > 0; } if (needLoadMoreToUpper) { - this.cb['upper'] && this.cb['upper']({ target: scrollEventTarget, top: targetScrollTop }); + this.cb.upper && this.cb.upper({ target: scrollEventTarget, top: targetScrollTop }); } }