我很难弄清楚如何为检索单个记录构建路由。例如,假设我有以下路线:
itemsById[{integers:itemIds}]["id"]["name"]
userItems[{integers:itemIndices}]
因此,userItems
路由查找itemsById
路由中的相关项目数据。这对于我的应用程序的列表视图来说很好,但是,我不知道如何为显示(显示单个项目)视图定义路线。
我想,如果我在列表视图中,我可以存储用户单击的项目的索引,然后在itemsById
路由中查找该索引,但用户可能会直接浏览到显示查看路由,这意味着我无法知道itemsById
索引。
我想我可以定义一条退货路线:
userItem[{integers:itemId}]
这条路线将itemId
作为一个参数,然后在itemsById
中查找它,但这似乎并不正确,因为Falcor建议您不应该使用ID。
我可能错过了什么。有人知道这里的正确方法是什么吗?
我想你已经接近了。据我所知,这将是您的个人物品查找路线:
itemsById[{keys:itemIds}][{keys:props}]
itemIds
将作为一个项目ID数组传递给您的路由器。如果用户查看的是单个项目的详细信息视图,则浏览器的URL可能包含以下内容:/items/7bca23
。因此,在客户端上,您可以使用model.get('itemsById.7bca23.name')
获取该项目的名称。
同时,对于列表视图,您会有这样的路线:
itemsByIndex[{integers:indices}]
indices
将作为一系列数字传递给您的路由器。在客户端上,您可以执行model.get('itemsByIndex[0..20].name')
。然后从该路径返回一组对象,如下所示:
{
path: [ 'itemsByIndex', 0 ],
value: { $type: 'ref', value: [ 'itemsById', '7bca23' ] }
}
Falcor将在同一请求期间跳到itemsById
路由,以提供所请求的图片段的其余部分。