Skip to content

Commit e6dc48d

Browse files
committed
Update named
1 parent 6ad5253 commit e6dc48d

File tree

2 files changed

+21
-20
lines changed

2 files changed

+21
-20
lines changed

demo/demo.vue

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
:itemHeight="30"
55
:remainItems="10"
66
:onScroll="onListScroll"
7-
v-on:end="onEnd"
7+
v-on:toBottom="onBottom"
88
>
9-
<Item v-for="item in items" :item="item" :key="$index" />
9+
<Item v-for="item in items" :item="item" :key="item.index" />
1010
</VirtualList>
1111
</div>
1212
</template>
@@ -29,20 +29,20 @@
2929
3030
data () {
3131
return {
32-
items: fetchData(20000)
32+
items: fetchData(20)
3333
}
3434
},
3535
3636
methods: {
37-
onEnd () {
38-
// let list = fetchData(20);
39-
// if (list.length) {
40-
// this.items = this.items.concat(list);
41-
// }
37+
onBottom () {
38+
let list = fetchData(20);
39+
if (list.length) {
40+
this.items = this.items.concat(list);
41+
}
4242
},
4343
4444
onListScroll (offset, e) {
45-
console.log(offset, e)
45+
// console.log(offset, e)
4646
}
4747
}
4848
}

src/index.js

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ const VirtualList = Vue.component('vue-virtual-scroll-list', {
1818
delta: {
1919
start: 0, // start index
2020
end: 0, // end index
21-
keeps: 0, // nums of item keeping in real dom
2221
total: 0, // all items count
23-
viewHeight: 0, // viewport height
22+
keeps: 0, // nums of item keeping in real dom
23+
viewHeight: 0, // container wrapper viewport height
2424
allPadding: 0, // all padding of not-render-yet doms
25-
paddingTop: 0 // container real padding-top
25+
paddingTop: 0 // container wrapper real padding-top
2626
},
2727

2828
methods: {
@@ -45,10 +45,11 @@ const VirtualList = Vue.component('vue-virtual-scroll-list', {
4545
let start = overs ? overs : 0;
4646
let end = overs ? (overs + delta.keeps) : delta.keeps;
4747

48+
// avoid overflow range
4849
if (overs + this.remainItems >= delta.total) {
4950
end = delta.total;
5051
start = delta.total - delta.keeps;
51-
this.$emit('end');
52+
this.$emit('toBottom');
5253
}
5354

5455
delta.end = end;
@@ -58,14 +59,14 @@ const VirtualList = Vue.component('vue-virtual-scroll-list', {
5859
this.$forceUpdate();
5960
},
6061

61-
filter (items) {
62+
filter (slots) {
6263
let delta = this.$options.delta;
6364

64-
delta.total = items.length;
65+
delta.total = slots.length;
6566
delta.paddingTop = this.itemHeight * delta.start;
66-
delta.allPadding = this.itemHeight * (items.length - delta.keeps);
67+
delta.allPadding = this.itemHeight * (slots.length - delta.keeps);
6768

68-
return items.filter((item, index) => {
69+
return slots.filter((slot, index) => {
6970
return index >= delta.start && index <= delta.end;
7071
});
7172
}
@@ -74,10 +75,10 @@ const VirtualList = Vue.component('vue-virtual-scroll-list', {
7475
beforeMount () {
7576
let remains = this.remainItems;
7677
let delta = this.$options.delta;
77-
let bench = Math.ceil(remains / 2);
78+
let benchs = Math.ceil(remains / 2);
7879

79-
delta.end = remains + bench;
80-
delta.keeps = remains + bench;
80+
delta.end = remains + benchs;
81+
delta.keeps = remains + benchs;
8182
delta.viewHeight = this.itemHeight * remains;
8283
},
8384

0 commit comments

Comments
 (0)