Component({ externalClasses: ['i-class'], properties : { scrollTop : { type : Number, observer(val){ this._updateScrollTopChange(); } } }, relations : { '../sticky-item/index' : { type : 'child', linked(){ this._updateDataChange(); }, linkChanged () { this._updateDataChange(); }, unlinked () { this._updateDataChange(); } } }, data : { timer : null, itemLength : 0, }, methods : { _updateScrollTopChange(){ const stickies = this.getRelationNodes('../sticky-item/index'); if( stickies.length > 0 ){ stickies.forEach((item) => { if( item ){ item.updateScrollTopChange( this.data.scrollTop ); } }) } }, _updateDataChange( ){ const stickies = this.getRelationNodes('../sticky-item/index'); if( stickies.length > 0 ){ if( this.data.timer ){ clearTimeout( this.data.timer ) this.setData({ timer : null }) } this.data.timer = setTimeout(()=>{ stickies.forEach((item,index) => { if( item ){ item.updateDataChange(index); } }) },0) this.setData({ timer : this.data.timer }) } } } })