方法使用时报错

来源:4-2 删除用户

Star3327752

2022-10-01 19:44:29

相关代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./css/base.css">
    <link rel="stylesheet" href="./css/common.css">
    <link rel="stylesheet" href="./font/iconfont.css">
    <link rel="stylesheet" href="./css/index.css">
    <script src="./js/vue.js"></script>
</head>
<body>
    <div id="container">
        <!-- 头部区域 -->
        <div class="header">
            <span class="fl">后台管理系统</span>
            <ul class="fr">
                <li><a href="javascript:;"><i class="iconfont icon-yonghu1"></i>个人中心</a></li>
                <li><a href="javascript:;"><i class="iconfont icon-tuichu"></i>退出</a></li>
              </ul>
        </div>

        <!-- 侧边栏 -->
        <div class="aside">
            <div>
                <img class="avatar" src="./images/avatar.jpg">
                <h3 class="name">云淡风轻</h3>
              </div>
              <ul class="nav">
                <li>
                    <a href="#">
                        <i class="iconfont icon-tongji2x"></i>数据统计
                    </a>
                </li>
                <li>
                    <a href="#">
                        <i class="iconfont icon-ai-article"></i>文章管理
                    </a>
                </li>
                <li>
                    <a href="#">
                        <i class="iconfont icon-lanmuguanli"></i>栏目管理
                    </a>
                </li>
                <li>
                    <a href="#">
                        <i class="iconfont icon-pinglun"></i>评论管理
                    </a>
                </li>
                <li class="active">
                    <a href="#">
                        <i class="iconfont icon-yonghu"></i>用户管理
                    </a>
                </li>
                <li>
                    <a href="#">
                        <i class="iconfont icon-shezhi"></i>系统设置
                    </a>
                </li>
              </ul>
        </div>

        <!-- 内容区 -->
        <div class="main">
            <div class="title">
                <h1>用户管理</h1>
            </div>

<!--            用户添加栏目-->
            <div class="form fl">
                <form>
                    <h3>添加新用户</h3>
                    <div class="form-group">
                      <label>姓名</label>
                      <input class="form-control" type="text" v-model="user.name">
                    </div>
                    <div class="form-group">
                      <label>昵称</label>
                      <input class="form-control" type="text" v-model="user.nickname">
                    </div>
                    <div class="form-group">
                      <label>性别</label>
                      <input class="form-control" type="text" v-model="user.gender">
                    </div>
                    <div class="form-group">
                      <button class="btn-primary" type="button" @click="handle">确定</button>
                    </div>
                  </form>
            </div>

<!--            用户列表栏目-->
            <div class="table fl">
                <table width="600">
                    <caption><h3>用户列表</h3></caption>
                    <thead>
                        <tr>
                            <th><input type="checkbox"></th>
                            <th>id</th>
                            <th>姓名</th>
                            <th>昵称</th>
                            <th>性别</th>
                            <th>操作</th>
                        </tr>
                    </thead>
                    
                    <tbody id="app">
                        <tr v-for="item in list" :key="item.id">
                            <td class="td-center"><input type="checkbox"></td>
                            <td>{{item.id}}</td>
                            <td>{{item.name}}</td>
                            <td>{{item.nickname}}</td>
                            <td>{{item.gender}}</td>
                            <td>
                                <a @click="edit(item.id)" href="javascript:;" class="btn btn-edit" style="margin-right: 8px;">编辑</a>
                                <a @click="del(item.id)" href="javascript:;" class="btn btn-delete">删除</a>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>
    </div>

<script>
    //添加表格
    Vue.createApp({
            data(){
                return{
                    list:[
                        { id: 1, name: 'Lux', nickname: '光辉女郎', gender: '女' },
                        { id: 2, name: 'Jax', nickname: '武器大师', gender: '男' },
                        { id: 3, name: 'Ashe', nickname: '寒冰射手', gender: '女' },
                        { id: 4, name: 'VN', nickname: '暗夜猎手', gender: '女' },
                        { id: 5, name: 'Raze', nickname: '符文法师', gender: '男' }
                    ]
                }
            },
            methods:{
                del(id){
                    console.log(id)
                    //通过id找到list里面的这一行,然后咨询是否确认删除
                    //确认之后删掉这一行,取消则return
                    let index= list.findIndex(item =>{
                        return item.id=id
                    })
                    console.log(index)
                }
            }
        }
    ).mount("#app")
</script>

<script src="js/users.js"></script>

</body>
</html>

https://img.mukewang.com/climg/63382760098ae43d25601600.jpg

https://img.mukewang.com/climg/6338278009aff5bc25601600.jpg

问题描述:使用老师的findIndex方法去找,但是找不到具体索引值,而且会报错

问题1:报错原因是什么?

问题2:如何修改为正确代码找到索引?

补充,我使用的是Vue.create().mount()进行直接绑定,一个功能区一次绑定,在绑定区间里面书写此区域会用到的方法和属性,希望老师可以在我的代码书写逻辑上做修改

写回答

1回答

好帮手慕小小

2022-10-05

同学你好,直接书写为list是无法直接访问data(){}定义的data,直接书写为list.findIndex相当于访问的del()中的list,但del()中未定义list,故运行时会出现list is not defined,list未定义的报错提示,建议将list.findIndex修改为this.list.findIndex后再进行测试运行。

https://img.mukewang.com/climg/633d04ba09c409ca05780145.jpg

注:直接将js代码书写在html与单独定义user.js再引入到html文件中的差别不大,若实际未使用到user.js文件,建议将<script src="js/users.js"></script>删除。另在实际开发中为了便于代码的维护一般采取外部引入js文件<script src="js/users.js"></script>的方式。

祝学习愉快~

0

0 学习 · 9886 问题

查看课程