b-list-group-item 中的 v-bind 在带有 bootstrap-vue 的 vue CLI-app 中不起作用

Posted

技术标签:

【中文标题】b-list-group-item 中的 v-bind 在带有 bootstrap-vue 的 vue CLI-app 中不起作用【英文标题】:v-bind in b-list-group-item not working in vue CLI-app with boootstrap-vue 【发布时间】:2020-03-19 11:53:24 【问题描述】:

我有一个使用 vue-CLI 制作的应用程序,包括 bootstrap-vue。在我的 App.vue 中,我使用 axios 来获取一些示例 JSON 数据。我使用 b-list-group-item (引导标签)生成一个列表,并希望在每个元素中绑定一个键(v-bind:key="result.ItemId")。这是行不通的。在 html 中没有“key”被渲染。

这是代码sn-p:

 <b-list-group >
      <b-list-group-item
        href="#"
        class="flex-column align-items-start"
        v-for="result in post"
        v-bind:key="result.ItemId"
      >
        <div class="d-flex w-100 justify-content-between">
          <h6 class="mb-1"> result.ItemHeading </h6>
          <small> result.ItemSubHeading </small>
        </div>

        <p class="mb-1"> result.ItemDetails </p>

      </b-list-group-item>
    </b-list-group> 

这是没有键绑定的渲染 html

这是 JSON 结果:

0: ItemId: "10075328", ItemHeading: "news im November", ItemSubHeading: "unter news",…
Date4Itemnew: "24.11.2019"
ItemDetails: "lorem ipsum"
ItemHeading: "news im November"
ItemId: "10075328"
ItemSubHeading: "unter news"
u_date: "1574550000"

我尝试了所有可能的绑定它。请帮忙。

【问题讨论】:

Key 仅用于 Vue 正确处理列表项。 这是什么意思?如果我使用“id”或“john”同样的问题。你能解释一下吗? 你的最终目标是什么? Vue 只将真正需要的内容呈现到 DOM 中。所以,有例如DOM 中没有v-if="true",但该元素要么存在要么不存在。钥匙也一样。它在 Vue 内部使用,但不渲染到 DOM 中。 key 属性用于向 Vue 指示元素何时应重新呈现其内容。当 key 改变时,Vue 会重新加载该组件。 感谢您的解释。如果我在没有 vue-CLI 的情况下构建应用程序,我可以例如在我的列表项中添加元素( id= ...)。 &lt;a id="10107333" target="_self" href="#" class="list-group-item flex-column align-items-start list-group-item-action"&gt;&lt;div class="d-flex w-100 justify-content-between"&gt;&lt;h6 class="mb-1"&gt;MusterBank&lt;/h6&gt; &lt;small&gt;25.01.2019&lt;/small&gt;&lt;/div&gt; 。我需要一个 ID 或密钥来进一步使用此列表元素。 你有没有尝试像这样绑定id&lt;b-list-group-item v-for="result in post" :id="result.ItemId"&gt; 【参考方案1】:

首先你必须通过 key [ result.ItemHeading ] 的值在 json 文件中循环,在你必须通过 value props 的同名绑定这个值之后: ["ItemHeading", "ItemSubHeading", "ItemDetails" ]

<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<template>
   <b-list-group>
      <b-list-group-item
         href="#"
         class="flex-column align-items-start"
         v-for="result in post"
         v-bind:key="result.ItemId"
         v-bind:ItemHeading="result.ItemHeading"
         v-bind:ItemSubHeading="result.ItemSubHeading"
         v-bind:ItemDetails="result.ItemDetails"
      >
         <div class="d-flex w-100 justify-content-between">
            <h6 class="mb-1"> result.ItemHeading </h6>
            <small> result.ItemSubHeading </small>
         </div>

         <p class="mb-1"> result.ItemDetails </p>
      </b-list-group-item>
   </b-list-group>
</template>

<script>
export default 
   props: ["ItemHeading", "ItemSubHeading", "ItemDetails"]
;
</script>

【讨论】:

以上是关于b-list-group-item 中的 v-bind 在带有 bootstrap-vue 的 vue CLI-app 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

vue-app开发入门

浅谈高清显示接口RGBLVDSMIPIeDPHDMImini-LVDSV-By-One(转载)

iOS Xcode 中的 UIViewController 中的 UIView 中的 UITableView

如何用ruby中的数组中的元素替换字符串中的单词?

如何将视图中的 javascript 代码中的对象列表传递给控制器​​中的操作方法

如何从账户 A 中的 Lambda(VPC 中的 Lambda)调用账户 B 中的 AWS Lambda 函数(VPC 中的这个 Lambda)