我无法弄清楚如何构建检索单个记录的路径。例如,假设我有这些路线:
itemsById[{integers:itemIds}]["id"]["name"]
userItems[{integers:itemIndices}]
因此,userItems
路线会在itemsById
路线中查找相关的项目数据。这适用于我的应用的列表视图,但是,我不确定如何为显示视图定义路径(显示单个项目)
我想如果我在列表视图中,我可以存储用户点击的项目的索引,然后在itemsById
路由中查找该索引,但用户可能会浏览直接到显示视图路线,这意味着我无法知道itemsById
索引。
我在想我可以定义一条返回单个项目的路线:
userItem[{integers:itemId}]
此路线将itemId
作为参数,然后在itemsById
中查找,但由于Falcor建议您不应该使用ID,因此这看起来并不合适。
我可能会遗漏一些东西。有谁知道这里的正确方法是什么?
答案 0 :(得分:2)
我觉得你很亲密。据我了解,这将是您的单项查找路线:
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
路由,以配置其余请求的图片片段。