在 v-for 迭代之间包含一次元素

Include element once in between v-for iteration

目前,我有一个 v-for 指令,它从一个数组中呈现一打 div。该数组包含来自开源搜索引擎 api 的有机结果。所有这些有机结果都具有相同的外观,因此迭代。另一方面,我有一个 div 保存新闻结果。现在,包含该结果的唯一方法是在呈现有机结果之后并在列表末尾。有没有办法把这个新闻结果放在有机结果之间的任何位置,而不必拆分有机结果数组?

请让我知道在框架的能力范围内这是否可行。

现状

<!--org result-->
<!--org result-->
<!--org result-->
<!--org result-->
<!--org result-->
<!--org result-->
<!--org result-->
<!--...-->
<!--news result-->

我需要什么

<!--org result-->
<!--org result-->
<!--news result-->
<!--org result-->
<!--org result-->
<!--org result-->
<!--org result-->
<!--org result-->
<!--...-->

很难给出没有细节的代码示例,但我会添加一个 computed property returns 一个新数组,将 org 结果和新闻结果组合到一个数组中。

然后您可以遍历组合数组并使用 v-if 到 select 根据类型(组织或新闻)呈现哪个组件。

像这样:

<template>
  <ul>
    <!-- NOTE: This assumes isOrg and id - change as needed -->
    <li v-for="item in orgAndNews" :key="item.id">
      <span v-if="item.isOrg">org item: {{ item.title }}</span>
      <span v-else>news item: {{ item.title }}</span>
    </li>
  </ul>
</template>

<script>
export default {
  props: {
    orgResults: {
      type: Array,
      required: true,
    },
    newsResult: {
      type: Object,
      required: true,
    },
  },
  computed: {
    orgAndNews() {
      return [...this.orgResults.slice(0, 2), this.newsResult, ...this.orgResults.slice(2)];
    },
  },
};
</script>