OldStreet. 2024-04-09 09:32 采纳率: 50%
浏览 22
已采纳

vue 中的computed和data中有数据还是报错未定义或被引用,请问如何解决?不放v-for循环就好了,一放v-for就会报这样的错误,而且循环data里面的menuData也是会报同样的错误~

vue 中的computed和data中有数据还是报错未定义或被引用,请问如何解决?不放v-for循环就好了,一放v-for就会报这样的错误,而且循环data里面的menuData也是会报同样的错误~

<template id="temp">
  <!-- vue实例外创建 -->
  <div>
    <div>
      <el-menu default-active="1-4-1" class="el-menu-vertical-demo"
        :collapse="isCollapse">
        <el-menu-item index="2" v-for="item in noChildren">
          <i class="el-icon-menu"></i>
          <span slot="title">导航二</span>
        </el-menu-item>
        <el-submenu index="1">
          <template slot="title">
            <i class="el-icon-location"></i>
            <span slot="title">导航一</span>
          </template>
          <el-menu-item-group>
            <el-menu-item index="1-1">选项1</el-menu-item>
          </el-menu-item-group>
        </el-submenu>
      </el-menu>
    </div>
  </div>
</template>

<style>
.el-menu-vertical-demo:not(.el-menu--collapse) {
  width: 200px;
  min-height: 100%;
}
</style>

<script>
export default {
  name:'HomeView',
  data() {
    return {
      isCollapse: false,
      menuData: [
        {
          path: '/',
          name: 'home',
          label: '首页',
          icon: 's-home',
          url: 'Home/Home'
        },
        {
          path: '/mall',
          name: 'mall',
          label: '商品管理',
          icon: 'video-play',
          url: 'MallManage/MallManage'
        },
        {
          path: '/user',
          name: 'user',
          label: '用户管理',
          icon: 'user',
          url: 'UserManage/UserManage'
        },
        {
          label: '其他',
          icon: 'location',
          children: [
            {
              path: '/page1',
              name: 'page1',
              label: '页面1',
              icon: 'setting',
              url: 'Other/PageOne'
            },
            {
              path: '/page2',
              name: 'page2',
              label: '页面2',
              icon: 'setting',
              url: 'Other/PageTwo'
            }
          ]
        }
      ]
    };
  },
  methods: {
 
  },
  computed: {
    // 没有子菜单
    noChildren() {
      return this.menuData.filter(item => !item.children)
    },
    // 有子菜单
    hasChildren() {
      return this.menuData.filter(item => item.children)
    }
  },
  
};


img

为什么我的conputed和data都有数据,还是报错呢?

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-09 09:32
    关注

    引自免费微信小程序:皆我百晓生

    首先,你需要明确你的问题,你的问题是关于计算属性和数据对象在计算结果中未定义或引用的问题。这种情况下,可能的原因有很多,例如你在组件初始化时没有正确地声明计算属性,或者在使用计算属性之前没有正确地使用它。

    对于这个问题,我们需要检查你的代码。如果你的代码在初始化组件或使用计算属性后才出现问题,那么很可能是由于这些操作导致了计算属性或数据对象在组件内部未被正确地赋值或引用。

    要解决这个问题,你需要确保在初始化组件或使用计算属性后,这两个变量都被正确的赋值或引用。这通常可以通过在组件模板中添加初始化代码来实现,也可以通过使用new关键字和赋值运算符来初始化这些变量。

    例如,在上面的例子中,如果你想初始化noChildrenhasChildren这两个变量,你可以这样写:

    this.noChildren = this.menuData.filter(item => !item.children);
    this.hasChildren = this.menuData.filter(item => item.children);
    

    同样,你也应该在每次使用hasChildrennoChildren前都将其赋值为一个初始值,以便在后续的操作中使用它们。

    此外,为了防止这种情况,你还可以考虑使用数组的filter()方法来过滤菜单数据,这样可以自动处理计算属性的值。

    总的来说,要解决这个问题,你需要仔细检查你的代码,并确保在初始化组件或使用计算属性后的变量都被正确地赋值或引用。同时,你也可以考虑使用数组的filter()方法来过滤菜单数据,这样可以自动处理计算属性的值。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 已采纳回答 10月9日
  • 创建了问题 4月9日

悬赏问题

  • ¥15 单纯型python实现编译报错
  • ¥15 c++2013读写oracle
  • ¥15 c++ gmssl sm2验签demo
  • ¥15 关于模的完全剩余系(关键词-数学方法)
  • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?