首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么v-for不能显示计算出来的值?

为什么v-for不能显示计算出来的值?
EN

Stack Overflow用户
提问于 2022-07-14 08:45:26
回答 1查看 99关注 0票数 0

这是用于选择一个cityarea,它将过滤相同的数据来显示它。但我遇到的一个问题是,当我选择时,这个值不会出现。

我已经尝试并搜索过类似的代码,但仍然没有找到解决方案。

这是HTML呈现的图像。

下面是模板

代码语言:javascript
复制
<a href="#" class="list-group-item" v-for="(live , idx) of filterLivingNames" :key="idx">
    <h3 class="text-center">{{live.Name}}</h3>
    <p>Address:</p>
    <p>Phone:</p>
</a>

这是剧本

代码语言:javascript
复制
import LivingData from '@/assets/LivingData.json';

export default {
    computed: {
        livedata(){
            return LivingData;
        },

        filterLivingNames(){
            let livelength = this.livedata.length

            for(let i = 0 ; i < livelength ; i++){
                if(this.livedata[i].Region === this.city && this.livedata[i].Town === this.area){
                    console.log(this.livedata[i])
                    return this.livedata[i]
                }
                else{
                    continue
                }
            }
        }
    }
}

更新json文件

代码语言:javascript
复制
[
  {
    "Id": "1",
    "Name": "Hotel-1",
    "Region": "Region-1",
    "Town": "Town-1",
  },
  {
    "Id": "2",
    "Name": "Hotel-2",
    "Region": "Region-2",
    "Town": "Town-2",
  },
  {
    "Id": "3",
    "Name": "Hotel-3",
    "Region": "Region-2",
    "Town": "Town-1",
  },
  {
    "Id": "4",
    "Name": "Hotel-4",
    "Region": "Region-1",
    "Town": "Town-2",
  },
]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-14 15:11:58

因为您正在过滤出基于livedataRegionTown。您可以简单地使用Array.filter()方法,这将解决您所面临的问题,因为它将返回数组。

现场演示

代码语言:javascript
复制
new Vue({
  el: '#app',
  data: {
    livedata: [
      {
        "Id": "1",
        "Name": "Hotel-1",
        "Region": "Region-1",
        "Town": "Town-1",
      },
      {
        "Id": "2",
        "Name": "Hotel-2",
        "Region": "Region-2",
        "Town": "Town-2",
      },
      {
        "Id": "3",
        "Name": "Hotel-3",
        "Region": "Region-2",
        "Town": "Town-1",
      },
      {
        "Id": "4",
        "Name": "Hotel-4",
        "Region": "Region-1",
        "Town": "Town-2",
      }
    ],
    city: 'Region-1',
    area: 'Town-1'
  },
  computed: {
    filterLivingNames() {
      return this.livedata.filter(obj => obj.Region === this.city && obj.Town === this.area)
    }
  }
})
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <a href="#" class="list-group-item" v-for="(livingData, index) of filterLivingNames" :key="index">
    <h3 class="text-center">{{ livingData.Name }}</h3>
    <p>Address:</p>
    <p>Phone:</p>
  </a>
</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72977726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档