在Algolia中实现路由后搜索ObjectID

时间:2019-03-22 02:12:58

标签: algolia instantsearch

我具有构建类似以下网址的功能:

http://localhost/listings?q=&idx=content_index&p=0&dFR[objectID][0]=97&dFR[objectID][1]=96

它会创建一个facetFilters:[[“” objectID:97“,” objectID:96“]]”}。我有一个清除所有功能,也可以清除所有过滤器:

        search.addWidget(
        instantsearch.widgets.clearAll({
            container: '#clearAll',
            templates: {
                link: '<i class="icon icon-undo2"></i>'
            },
            autoHideContainer: false,
            clearsQuery: true
        })
    );

这很好用,也可以清除上面的过滤器。但是问题出在开始路由时。通过路由,

http://localhost/listings?q=&idx=content_index&p=0&dFR%5Bgenres.name%5D%5B0%5D=Comedy

更改为:

http://localhost/listings?genres=Comedy

对上述内容进行了以下更改:

routing: {
stateMapping: {
    stateToRoute(uiState) {

        return {
            query: uiState.query,
            // we use the character ~ as it is one that is rarely present in data and renders well in urls
            genres:
            uiState.refinementList &&
            uiState.refinementList['genres.name'] &&
            uiState.refinementList['genres.name'].join('~'),
            page: uiState.page
        };
    },
    routeToState(routeState) {

        return {
            query: routeState.query,
            refinementList: {
                'genres.name': routeState.genres && routeState.genres.split('~'),
            },
            page: routeState.page
        };
    }
}

},

必须为objectID实现相同的功能。该怎么做?

0 个答案:

没有答案