v-for 循环 index的传值问题

<el-col>
  <el-menu default-active="1">
    <el-submenu :index="index" v-for="(item,index) in menuList">
      <tempalte slot="title">{{item.subListName}}</tempalte>
      <el-menu-item-group v-if="item.subMenuList">
        <el-menu-item :index="subindex" v-for="(subItem,subindex) in item.subMenuList">{{index}}-{{subItem.subMenuName}}</el-menu-item>
      </el-menu-item-group>
    </el-submenu>
  </el-menu>
</el-col>

clipboard.png

此时index获取为Number类型 ,说是类型不匹配。

但是我如果通过 filter过滤器去写一个转换成string类型。也会报错报错未undefind。所以请问有什么办法


    
export default{
data () {
  return {
    menuList: []
  };
},
filters: {
  toStr (value) {
    value = value.toString();
  }
},
created () {
  //略

};

clipboard.png

阅读 21.2k
6 个回答
<el-menu-item :index="subindex" v-for="(subItem,subindex) in item.subMenuList">{{index}}-{{subItem.subMenuName}}</el-menu-item>

=>

<el-menu-item :index="''+subindex" v-for="(subItem,subindex) in item.subMenuList">{{index}}-{{subItem.subMenuName}}</el-menu-item>
toStr (value) {
    return value.toString();
  }

可以在子组件里设置

props: {
  index:  Number
}
props: {
  index:  Number | String 
}

这样可以接受类型为Number的 index
或者

 <el-menu-item :index="subindex.toString()" v-for="(subItem,subindex) in item.subMenuList">{{index}}-{{subItem.subMenuName}}</el-menu-item>

或者

filters: {
  toStr (value) {
    if (value){
        return value.toString()
    }else{
        // undefined时候的操作
    }
  }
},

''+ index 即可,外面用双引号包起来。

`${index} `
字符串模版了解一下

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题