【问题标题】:Vue.js / Algolia - Dynamically pass field names in templateVue.js / Algolia - 在模板中动态传递字段名称
【发布时间】:2019-02-21 09:38:11
【问题描述】:

我正在尝试根据一组名称动态显示来自 Algolia 的搜索结果。

Input.vue:

<search-results title="Books" :fields="['booking_reference','shipment_reference']"></search-results>

Results.vue:

<template slot-scope="{ result }">
     <h1 v-for="field in fields">{{ result.field }}</h1>
</template>

但是,上面的代码在我的模板中没有返回任何内容。它只是空白。

但我的fields 数组确实有值:

我也可以看到 Algolia 的结果:

但它没有显示结果。

如果我编辑代码并对要显示的字段名称进行硬编码,如下所示:

<template slot-scope="{ result }">
          {{ result.booking_reference }}
</template>

我可以在我的模板中看到结果。

我做错了什么?

更新:

如何使用多维数组做到这一点?

我的数组:

fields:Array[2]
0:Object
maintitle:"booking_reference"
1:Object
subtitle:"shipment_reference"

我需要能够像这样访问它:

result.maintitle.field

【问题讨论】:

  • 您在Results.vue 中使用的作用域插槽意味着还有另一个内部组件。如果是这种情况,请更新代码以显示内部组件的定义。否则,您根本不需要作用域插槽。

标签: vue.js vuejs2 algolia instantsearch.js


【解决方案1】:

试试

 <h1 v-for="field in fields">{{ result[field] }}</h1>

而不是

 <h1 v-for="field in fields">{{ result.field }}</h1>

【讨论】:

  • 您介意看看我更新的问题吗?我正在尝试做同样的事情,但这次使用的是多维数组
  • 不确定我是否理解正确,但试试这个&lt;h1 v-for="(field, fieldKey) in fields"&gt;{{ result[fieldKey][field] }}&lt;/h1&gt;
猜你喜欢
  • 2019-02-02
  • 2019-10-27
  • 2015-09-10
  • 2013-11-14
  • 2021-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多