2015-11-26 1 views
1

У меня возникают проблемы, выяснить, как структурировать маршруты для извлечения отдельных записей. Например, позволяет сказать, у меня есть эти маршруты:Как для поиска в отдельный элемент в Falcor

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

Итак, userItems маршрут просматривает соответствующие данные позиции в itemsById маршруте. Это нормально для списка зрения моего приложения, однако, я не знаю, как определить маршрут для показать вид (который отображает отдельный элемент).

Я полагаю, если бы я был на список зрения я мог бы хранить индекс элемента, который пользователь нажимает на то Lookup, что индекс вверх в itemsById маршрут, но пользователь может просматривать непосредственно на показать вид маршрут означает, что у меня нет возможности узнать индекс itemsById.

Я думал, что я мог бы определить маршрут, чтобы вернуть отдельный элемент:

userItem[{integers:itemId}] 

Этот маршрут берет itemId в качестве аргумента, то выглядит это в itemsById, но это на самом деле не кажется правильным, так как Falcor предлагает вам не работать с идентификаторами.

Я скорее всего что-то отсутствует. Кто-нибудь знает, какой правильный подход здесь?

ответ

2

Я думаю, что вы близки. Как я понимаю, это будет ваш индивидуальный элемент поиска маршрута:

itemsById[{keys:itemIds}][{keys:props}] 

itemIds будет передан к маршрутизатору как массив идентификаторов элементов. Если пользователь просматривает подробное представление одного элемента, 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 маршрут в течение этого же запроса на предоставление остальной части запрашиваемого фрагмента графика.

+0

Спасибо за это. Мне показалось, что мне, возможно, придется напрямую взаимодействовать с маршрутом itemsById, но я не был уверен, что это была хорошая практика. Кажется, лучший вариант. – overture8