Vue-03:

首先,我们来复习一下前天学过的:内置指令;利用v-for,v-model,v-on来做的添加列表;以及图片来回切换效果。

1.>v-for:循环指令,主要用于列表渲染,可以遍历数组和对象;
2.>v-model:对表单元素进行双向数据绑定;
3.>v-on:绑定事件监听器,表达式:v-on:事件名='函数名';
4.>v-bind:主要用于动态绑定Dom元素属性,表达式:v-bind:属性名=‘值’;
5.>v-show:控制元素显示与隐藏;
6.>v-if:控制元素显示与隐藏;
7.>v-else/v-else-if:不需要表达式,v-else必须有v-if或v-else-if;

接下来,列举几个老师给我们讲的几个实用实例:

1.>选项卡:

(第一种方法)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .app,li{
            border: 1px solid #000;
            list-style: none;
            float: left;
        }
    </style>
</head>
<body>
    <div class="app">
        <div v-for='(value,index) in arr' v-show="ars[index]">{{value}}</div>
        <ul>
            <li v-for="(value,index) in arr" @click="qjt(index)">{{index+1}}</li>
        </ul>
    </div>
    <script src="../vue.js"></script>
    
    <script>
      new Vue({
        el:'.app',
        data:{
            arr:['QJT','QJQ','QJJ'],
            ars:[true,true,true]
        },
        methods:{
            qjt:function(ind){
                this.ars=[!true,!true,!true]
                this.ars[ind]=true
            }
        }
    })
    </script>
</body>
</html>

效果图:
Document2.png

(第二种方法):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        li{
            list-style: none;
            float: left;
            border: 15px solid #000;
        }
    </style>
</head>
<body>
    <div id="itany">
        <ul>
            <li v-for='value,index' in xxk @click='chg(index)'>{{value,title}}</li>
        </ul>
    </div>
    <script src="../vue.js"></script>
    <script>
    new Vue({
        el:'#itany',
        data:{
            xxk:[{title:'SKY',content:'蓝色天空',flag:true},
            {title:'WHITE',content:'白色',flag:false},
            {title:'black',content:'黑色',flag:false}
                ]
        },
            
        methods:{
            chg:function(ind){
        
        for(var i=0;i<this.xxk.length;i++){
            this.xxk[i].flag=false;
            this.xxk[ind].flag=true;
        }
    }
            }
    
    })
    </script>
</body>
</html>

2.>购物车:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="../bootstrap.css">
</head>
<body>
    <div class='container'>
        <table class='table table-bordered text-center'>
            <thead>
                <tr>
                    <th>编号</th>
                    <th>品名</th>
                    <th>单价</th>
                    <th>数量</th>
                    <th>小计</th>
                </tr>
            </thead>
            <tbody>
                <tr v-for="(value,index) in list">
                    <td>{{index+1}}</td>
                    <td>{{value.pname}}</td>
                    <td>{{value.price}}</td>
                    <td>
                        <button @click='add(index)'>+</button>
                        <span>{{value.count}}</span> 
                         <button @click='redu(index)'>-</button>
                     </td>
                    <td>{{value.sub}}</td>
                </tr>
                <tr>
                    <td colspan="5">总价:¥{{sum}}</td>
                </tr>
            </tbody>
        </table>
    </div>
  <script src='../vue.js'></script>
  <script type="text/javascript">
    new Vue({
        el:'.container',
        data:{
            list:[
                 {pname:'apple',price:3,count:2,sub:6},
                 {pname:'pear',price:4,count:3,sub:12},
                 {pname:'banana',price:5,count:4,sub:20}
            ],
            sum:0
        },
        methods:{
            add:function(ind){
                //数量
                this.list[ind].count++;
                //改变小计
                this.list[ind].sub=this.list[ind].count*this.list[ind].price;
                this.total();
            },
            redu:function(ind){
                //数量
                if(this.list[ind].count>1){
                   this.list[ind].count--;
                }
                //小计
                this.list[ind].sub=this.list[ind].count*this.list[ind].price;

                this.total();
            },
            total:function(){
                for(var i=0,tota=0;i<this.list.length;i++){
                        tota+=this.list[i].sub
                }
                this.sum=tota
            }
        }
    })
  </script>
</body>
</html>

Document3.png

3.>用户管理:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="../bootstrap.css">
</head>
<body>
    <div class="container">
        <form action="">
            <div class="form-group">
                <label for="">用户名</label>
                <input type="text" class='form-control' placeholder="请输入用户名" v-model='student.uname'>
            </div>
            
            <div class="form-group">
                <label for="">密码</label>
                <input type="text" class='form-control' placeholder="请输入密码" v-model='student.pass'>
            </div>
            
            
            <div class="form-group">
                <label for="">邮箱</label>
                <input type="text" class='form-control' placeholder="请输入邮箱" v-model='student.email'>
            </div>
            
            
            <div class="form-group text-center">
                <input type="text" class='btn btn-success' value="添加" @click='add'>
                
                <input type="text" class="btn btn-info" value="重置">
            </div>
        </form>
        
        <table class="table table-bordered">
            <thead>
                <tr>
                    <th>编号</th>
                    <th>姓名</th>
                    <th>密码</th>
                    <th>邮箱</th>
                    <th>操作</th>
                </tr>
            </thead>
            <tbody>
                <tr v-for="(value,index) in user">
                    <td>{{index+1}}</td>
                    <td>{{value.uname}}</td>
                    <td>{{value.pass}}</td>
                    <td>{{value.email}}</td>
                    <td><button @click='delt(index)'>删除</button></td>
                </tr>
            </tbody>
        </table>
    </div>
    <script src="../vue.js"></script>
    <script>
    new Vue({
        el:'.container',
        data:{
            user:[
                { uname:'jack',pass:'123456',email:'123@126.com'
                },
                
                { uname:'rose',pass:'123456',email:'123@126.com'
                },
                
                
                { uname:'taitan',pass:'123456',email:'123@126.com'
                }
            ],
            student:{}
        },
        methods:{
            add:function(){
                this.user.push(this.student);
                this.student={}
            },
            delt:function(ind){
                this.user.splice(ind,1)
            }
        }
        
    })
    </script>
</body>
</html>

效果图:

Document.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 10,473评论 0 29
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,828评论 19 139
  • 1.安装 可以简单地在页面引入Vue.js作为独立版本,Vue即被注册为全局变量,可以在页面使用了。 如果希望搭建...
    Awey阅读 13,797评论 4 129
  • 1. Vue 实例 1.1 创建一个Vue实例 一个 Vue 应用由一个通过 new Vue 创建的根 Vue 实...
    王童孟阅读 4,626评论 0 2
  • ——安全感,一个用来用去定义模糊掉了的词。 自爱 今天洗澡时想起了三天前写的文章,它是这样开头的:“她对自己是叔控...
    ZeroworldC阅读 2,622评论 0 3

友情链接更多精彩内容