作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在我的列表 ${this.url}/users?offset=${offset}&limit=12
中初始化 12 个用户,但是随着滚动,这个偏移量应该增加 8 个用户。
我想为此使用无限滚动。我的问题是我正在使用 observables(userList)
并且我不知道如何将包含 8 个成员的新列表附加到旧列表。在互联网的教程中,所有人都使用 concat()
但这是针对数组的:/我自己尝试了一些东西来调用整个列表 + 8 偏移量,当 loadMore 为真时,但不知何故不起作用.
我的代码:
服务.ts
// get a list of users
getList(offset= 0): Observable<any> {
return this.http.get(`${this.url}/users?offset=${offset}&limit=12`);
}
页面.ts
@ViewChild(IonInfiniteScroll) infiniteScroll: IonInfiniteScroll;
userList: Observable<any>;
offset = 0;
...
getAllUsers(loadMore = false, event?) {
if (loadMore) {
this.userList = this.userService.getList(this.offset += 8) //new 8 users
.pipe(map(response => response.results));
}
this.userList = this.userService.getList(this.offset) // initials 12 users
.pipe(map(response => response.results));
if (event) {
event.target.complete();
console.log(event);
console.log(loadMore);
}
}
页面.html
...
</ion-item>
</ion-list>
<ion-infinite-scroll threshold="100px" (ionInfinite)="getAllUsers(true, $event)">
<ion-infinite-scroll-content
loadingSpinner="crescing"
loadingText="Loading more data...">
</ion-infinite-scroll-content>
</ion-infinite-scroll>
</ion-slide>
<ion-slide>
最佳答案
使用Merge将多个 observables
合并为一个 observable:
getAllUsers(loadMore = false, event?) {
if (loadMore) {
const newUserList$ = this.userService.getList(this.offset += 8) //new 8 users
.pipe(map(response => response.results));
this.userList = merge(this.userList, newUserList$); // merge observables
}
this.userList = this.userService.getList(this.offset) // initials 12 users
.pipe(map(response => response.results));
if (event) {
event.target.complete();
console.log(event);
console.log(loadMore);
}
}
从您的 URL 中,也许您应该删除限制参数:
getList(offset= 0): Observable<any> {
return this.http.get(`${this.url}/users?offset=${offset}`);
}
关于javascript - 如何将一个可观察对象附加到另一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58784340/
我是一名优秀的程序员,十分优秀!