【发布时间】:2016-05-15 03:11:56
【问题描述】:
我有一个 CRUD API,实体上的 get 返回当前过滤器配置的列表和项目总数。
例如:GET /posts
{
"items": [
{
"id": 1,
"title": "post title 1"
}
...
],
"total": 9
}
如何创建一个只执行一次 HTTP 查询但我可以订阅总值或项目列表的 observable?
我在使用 typescript 的 Angular2 上下文中。
我第一次尝试,它成功了:
this.http.get('/api/posts').map(response => response.json()).subscribe(data => {
var items = data.items
var total = data.total
});
但我不喜欢这样,因为我不能将我的接口用于 Post 实体(或者我必须定义一个像 {items: Post, total: number} 这样的接口,这不是很优雅)。我想做的是这样的:
this.myPostService.totalObservable.subscribe(total => this.total = total)
this.myPostService.itemsObservable.subscribe(items => this.items = items)
但不会触发 2 个查询。
我查看了这篇博文:https://coryrylan.com/blog/angular-2-observable-data-services,但我不喜欢你先订阅然后调用 list() 方法来加载列表的事实。
【问题讨论】:
-
嗨@paulpdaniels。我用一些例子更新了我的问题。
标签: javascript rxjs