如何在Falcor中查找单个项目

时间:2015-11-26 14:42:38

标签: falcor falcor-router

我无法弄清楚如何构建检索单个记录的路径。例如,假设我有这些路线:

itemsById[{integers:itemIds}]["id"]["name"]
userItems[{integers:itemIndices}]

因此,userItems路线会在itemsById路线中查找相关的项目数据。这适用于我的应用的列表视图,但是,我不确定如何为显示视图定义路径(显示单个项目)

我想如果我在列表视图中,我可以存储用户点击的项目的索引,然后在itemsById路由中查找该索引,但用户可能会浏览直接到显示视图路线,这意味着我无法知道itemsById索引。

我在想我可以定义一条返回单个项目的路线:

userItem[{integers:itemId}]

此路线将itemId作为参数,然后在itemsById中查找,但由于Falcor建议您不应该使用ID,因此这看起来并不合适。

我可能会遗漏一些东西。有谁知道这里的正确方法是什么?

1 个答案:

答案 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路由,以配置其余请求的图片片段。