wechat-miniprogram / recycle-view

recycle-view: a wechat miniprogram custom component
MIT License
635 stars 72 forks source link

我这里列表的每一项都渲染了 #2

Closed zzxqd closed 6 years ago

zzxqd commented 6 years ago

image

zzxqd commented 6 years ago

如图所示,不知道是不是我的写法有问题 wxml:

{{item.idx+1}}. {{item.title}}

js: const createRecycleContext = require('miniprogram-recycle-view'); Component({ data:{ batchSetRecycleData:true, recycleList:[] }, attached:function(){ for(let i=0;i<100;i++){ this.data.recycleList.push({ id:i, idx:i, image_url:'http://www.w3school.com.cn/i/eg_tulip.jpg', title:这是第${i+1}项 }) } console.log(this.data.recycleList); this.setData({ recycleList:this.data.recycleList }) const ctx = createRecycleContext({ id:'recycleId', dataKey:'recycleList', page:this, itemSize:{ width:162, height:182 } }); } })

cunjinli6 commented 6 years ago

不要通过setData({ recycleList:this.data.recycleList })来设置列表数据,而是通过ctx.append(recycleList)来设置。

zzxqd commented 6 years ago
    for (let i = 0; i < 100; i++) {
        this.data.recycleList.push({
            id: i,
            idx: i,
            image_url: 'http://www.w3school.com.cn/i/eg_tulip.jpg',
            title: `这是第${i+1}项`
        })
    }
    const ctx = createRecycleContext({
        id: 'recycleId',
        dataKey: 'recycleList',
        page: this,
        itemSize: {
            width: 162,
            height: 182
        }
    });
    ctx.append(this.data.recycleList);

不行啊,老哥,没有数据 image

zzxqd commented 6 years ago

或者老哥能发个代码片段不,我这里看着写

cunjinli6 commented 6 years ago

目录tools/demo里面有代码片段,跑npm run dev可以在最外层生成miniprogram_dev目录,用开发者工具可以跑。

zzxqd commented 6 years ago

似乎还是不行 image

zzxqd commented 6 years ago

onLoad: function () { var ctx = createRecycleContext({ id: 'recycleId', dataKey: 'recycleList', page: this, itemSize: { props: 'azFirst', // cacheKey: 'cacheKey', // 预先缓存的key queryClass: 'recycle-itemsize', // 动态查询的class dataKey: 'recycleListItemSize', // 预先渲染的数据的wx:for绑定的变量 // componentClass: 'recycle-list' }, placeholderClass: ['recycle-image', 'recycle-text'], // itemSize: function(item) { // return { // width: 195, // height: item.azFirst ? 130 : 120 // } // }, // useInPage: true }) let list = []; for (let i = 0; i < 100; i++) { list.push({ id: i, idx: i, image_url: 'http://www.w3school.com.cn/i/eg_tulip.jpg', title: 这是第${i+1}项 }) } this.ctx = ctx; this.ctx.append(list); }

zzxqd commented 6 years ago

在你的代码上通过append来增加列表还是会全部都渲染

cunjinli6 commented 6 years ago

我看你给的是56条,总数据是100条,所以没有渲染所有数据?目前是会渲染多几屏的数据的。

zzxqd commented 6 years ago

是的,我这里没注意,可能是我高度定的太低了,所以渲染的数据会多点,多谢老哥