【发布时间】:2019-07-19 13:02:13
【问题描述】:
我已经完成了我的研究,试图弄清楚如何实现我在下面描述的内容,但是我没有运气。
在我的 Algolia 索引中,一些记录具有嵌套对象。
例如,title 和 subtitle 属性的格式如下:
title:
{
"en": "English title",
"gr": "Greek title"
}
我只想对这些属性的特定子集(在我们的示例中为“en”或“gr”)执行查询,而不在 UI 中“公开”任何方面——理想情况下,语言选择将基于“自动”完成在使用 props 传递给 Vue 组件的变量 (lang) 上。我正在使用具有默认 Vue 实现的 Laravel Scout 包,如文档 here 中所述。
我的 InstantSearch 实现非常简单,我没有定义任何关于查询和可搜索属性的具体内容,我目前正在使用 Algolia 的所有默认功能。
<template>
<ais-instant-search
:search-client="searchClient"
index-name="posts_index"
>
<div class="search-box">
<ais-search-box placeholder="Search posts..."></ais-search-box>
</div>
<ais-hits>
<template
slot="item"
slot-scope="{ item }"
>
<div class="list-image">
<img :src="'/images/' + item.image" />
</div>
<div class="list-text">
<h2">
{{ item.title }}
</h2>
<h3>
{{ item.subtitle }}
</h3>
</div>
</template>
</ais-hits>
</ais-instant-search>
</template>
<script>
import algoliasearch from 'algoliasearch/lite';
export default {
data() {
return {
searchClient: algoliasearch(
process.env.ALGOLIA_APP_ID,
process.env.ALGOLIA_SEARCH
),
route: route,
};
},
props: ['lang'],
computed: {
computedItem() {
// computed_item = this.item;
}
}
};
</script>
当变量lang 设置为“en”时,我想以某种方式传递一个选项来查询“title.en”和“subtitle.en”。所有这一切,用户无需在 UI 中选择“title.en”或“subtitle.en”。
更新
也许计算属性 是要走的路,但是我找不到如何在计算属性中引用搜索结果/点击属性(例如item.title)。这是我注释掉的代码。
【问题讨论】:
-
变量 language 来自哪里?你说的是 cookie,但我在代码中看不到它
-
@onuriltan 我刚刚编辑了我的原始帖子以包含 lang 变量,作为道具传递给 vue 组件。
-
您可以查看答案吗?如果不能解决问题,我可以帮忙