12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import { querySelector } from './query-node';
- Component({
- externalClasses: ['custom-class'],
- relations: {
- './waterfall': {
- type: 'parent',
- linked(target) {
- }
- }
- },
- properties: {
- },
- data: {
- itemCount: 10, // 瀑布流重绘之前,在viewport之外渲染,防止低性能手机出现页面抖动的问题
- name: 'li',
- position: 'left',
- top: -1,
- },
- parent: null,
- observers: {
- },
- lifetimes: {
- ready() {
- this.renderView()
- },
- },
- /**
- * 组件的方法列表
- */
- methods: {
- renderView(){
- // setTimeout(() => {
- const { itemCount } = this.data;
- const [waterfall] = this.getRelationNodes('./waterfall');
- waterfall.childCount += 1;
- this.parent = waterfall;
- this.setData({
- itemCount: itemCount + waterfall.childCount,
- })
- this.setWaterfallItemPosition();
- // }, 100);
- },
- async setItemGap(node) {
- const { itemGap, waterfallWidth } = this.parent;
- if(itemGap < 0 && node) {
- const { width } = node;
- this.parent.itemGap = waterfallWidth - width * 2;
- }
- },
- async setWaterfallItemPosition() {
- // setTimeout(() => {
- querySelector('.waterfall-item', this)
- .then(async (node) => {
- await this.setItemGap(node);
- const {
- top,
- position,
- } = await this.parent.getWaterfallItemPostionInfo(node);
- this.setData({
- top,
- position
- })
- })
- // }, 500);
-
- },
- }
- })
|