五、伊森商城 前端基础-Vue p24

news2024/9/23 15:33:33

目录

1、v-on

2、事件修饰符

 3、按键修饰符

3.1、组合按钮

4、v-for

5、v-if和v-show

6、v-else 和 v-else-if

 6.1、v-if结合v-for来时用


1、v-on

v-on 指令用于给页面元素绑定事件。
语法: v-on: 事件名 ="js 片段或函数名 "
事件绑定可以简写,例如 `v-on:click='add'` 可以简写为 `@click='add'`
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>


    <div id="app">
        <!--事件中直接写 js 片段-->
        <button v-on:click="num++">点赞</button>
        <!--事件指定一个回调函数,必须是 Vue 实例中定义的函数-->
        <button v-on:click="decrement">取消</button>
        <h1>有{{num}}个赞</h1>
    </div>
    <script src="../node_modules/vue/dist/vue.js"></script>
    
    <script type="text/javascript">
        let vm = new Vue({
            el: "#app",
            data: {
                num: 100
            },
            methods: {
                decrement() {
                    this.num--; //要使用 data 中的属性,必须 this.属性名
                }
            }
        })
    </script>

</body>

</html>

 

2、事件修饰符

在事件处理程序中调用 `event.preventDefault()` `event.stopPropagation()` 是非常常见的
需求。尽管我们可以在方法中轻松实现这点,但更好的方式是:方法只有纯粹的数据逻辑,
而不是去处理 DOM 事件细节。
为了解决这个问题, Vue.js `v-on` 提供了 事件修饰符 。修饰符是由 点开头的指令后缀
表示的。
`.stop` :阻止事件冒泡到父元素
`.prevent` :阻止默认事件发生
`.capture` :使用事件捕获模式
`.self` :只有元素自身触发事件才执行。(冒泡或捕获的都不执行)
`.once` :只执行一次
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div id="app">
        <!--右击事件,并阻止默认事件发生-->
        <!-- contextmenu就是右键点击浏览去会出现的一个框框 -->
        <button v-on:contextmenu.prevent="num++">点赞</button>
        <br />
        <!--右击事件,不阻止默认事件发生-->
        <button v-on:contextmenu="decrement($event)">取消</button>
        <br />
        <h1>有{{num}}个赞</h1>
    </div>
    <script src="../node_modules/vue/dist/vue.js"></script>
    <script type="text/javascript">
        let app = new Vue({
            el: "#app",
            data: {
                num: 100
            },
            methods: {
                decrement(ev) {
                    // ev.preventDefault();
                    this.num--;
                }
            }
        })
    </script>
</body>

</html>
效果:右键“点赞”,不会触发默认的浏览器右击事件;右键“取消”,会触发默认的浏览
器右击事件)

 就是点击“取消”会弹出下面这个框框

contextmenu表示的就是这个浏览器提示这个框框

 

 3、按键修饰符

在监听键盘事件时,我们经常需要检查常见的键值。 Vue 允许为 `v-on` 在监听键盘事件时添
加按键修饰符

 全部的按键别名:

`.enter`
`.tab`
`.delete` ( 捕获 删除 退格 )
`.esc`
`.space`
- `.up`
- `.down`
`.left`
`.right`

 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <div id="app">
                
        <!--事件中直接写js片段-->
        <button v-on:click="num++">点赞</button>
        <!--事件指定一个回调函数,必须是Vue实例中定义的函数-->
        <button @click="cancel">取消</button>
        <!--  -->
        <h1>有{{num}}个赞</h1>


        <!-- 事件修饰符 -->
        <!-- v-on:click.once点击事件只生效一次 -->
        <div style="border: 1px solid red;padding: 20px;" v-on:click.once="hello">
            大div
            <!-- @click.stop点击事件阻止事件冒泡到父元素 -->
            <!-- 如果不加stop的话,会触发小div,也会触发大div,加了就只触发小div -->
            <div style="border: 1px solid blue;padding: 20px;" @click.stop="hello">
                小div <br />
                <a href="http://www.baidu.com" @click.prevent.stop="hello">去百度</a>
            </div>
        </div>



        <!-- 按键修饰符 -->
        <!-- keyup.up按住上键点赞+2,keyup.down按住下键点赞-2 -->
        <!-- v-model上一章讲的双向绑定,不加的话不会点赞数不会显示在输入框 -->
        <!-- 组合按钮Ctrl + Click -->
        <!-- @click.ctrl点赞加10 -->
        <input type="text" v-model="num" v-on:keyup.up="num+=2" @keyup.down="num-=2" @click.ctrl="num=10"><br />

        提示:

    </div>
    <script src="./node_modules/vue/dist/vue.js"></script>

    <script>
        new Vue({
            el:"#app",
            data:{
                num: 1
            },
            methods:{
                cancel(){
                    this.num--;
                },
                hello(){
                    alert("点击了")
                }
            }
        })
    </script>
</body>

</html>

3.1、组合按钮

可以用如下修饰符来实现仅在按下相应按键时才触发鼠标或键盘事件的监听器。
`.ctrl`
`.alt`
`.shift`
上面代码输入框按住CTRL+左键即是组合按键

4v-for

遍历数据渲染页面是非常常用的需求,Vue 中通过 v-for 指令来实现。 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>

    <div id="app">
        <ul>   
            <!-- 遍历数组 -->
            <!-- 1、显示user信息:v-for="item in items" -->
            <!-- items要被遍历的元素,item当前正在遍历的元素 -->
            <!-- 这里是我要遍历的data中的users, -->
            <!-- 第一个参数也可以加上括号,里面再写一个参数,表示的是当前正在遍历的元素的索引!是索引!第几个的那个下标 -->
            <li v-for="(user,index) in users" :key="user.name">

               当前索引:{{index}} ==>{{user}} ==> {{user.name}}  ==>   {{user.gender}} ==>{{user.age}} <br>
                <!-- 2、获取数组下标:v-for="(item,index) in items" -->
                <!-- 3、遍历对象:
                        v-for="value in object" 获取每一个对象的值
                        v-for="(value,key) in object" 获取每一个对象的键值对
                        v-for="(value,key,index) in object"  获取每一个对象的键值对+索引
                -->


                <!-- 遍历对象实操 -->
                <!-- 获取每一个对象的键值对+索引 -->
                对象信息:
                <span v-for="(v,k,i) in user">{{k}}=={{v}}=={{i}};</span>
                
                <!-- 4、遍历的时候都加上:key来区分不同数据,提高vue渲染效率 -->
                <!-- :key来区唯一的元素,区分每一个对象,跟每一个对象的不同 -->

            </li>

            
        </ul>

        <ul>
            <!-- 这里用:key,因为数字可能会重复,所以拿索引来区分唯一 -->
            <li v-for="(num,index) in nums" :key="index"></li>
        </ul>




    </div>
    <script src="../node_modules/vue/dist/vue.js"></script>
    <script>         
        let app = new Vue({
            el: "#app",
            data: {
                users: [{ name: '柳岩', gender: '女', age: 21 },
                { name: '张三', gender: '男', age: 18 },
                { name: '范冰冰', gender: '女', age: 24 },
                { name: '刘亦菲', gender: '女', age: 18 },
                { name: '古力娜扎', gender: '女', age: 25 }],
                nums: [1,2,3,4,4]
            },
        })
    </script>
</body>

</html>

5、v-if和v-show

v-if 是直接删除元素

v-show 是使用style="display: none;"属性来隐藏

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <!-- 
        v-if,顾名思义,条件判断。当得到结果为true时,所在的元素才会被渲染。
        v-show,当得到结果为true时,所在的元素才会被显示。 
    -->
    <div id="app">
        <button v-on:click="show = !show">点我呀</button>
        <!-- 1、使用v-if显示 -->
        <!-- v-if是直接删除元素 -->
        <h1 v-if="show">if=看到我....</h1>
        <!-- 2、使用v-show显示 -->
        <!-- v-show是添加style="display: none;"属性来隐藏,是隐藏 -->
        <h1 v-show="show">show=看到我</h1>
    </div>

    <script src="../node_modules/vue/dist/vue.js"></script>

    <script>
        let app = new Vue({
            el: "#app",
            data: {
                show: true
            }
        })
    </script>

</body>

</html>

6、v-else v-else-if

v-else 元素必须紧跟在带 `v-if` 或者 `v-else-if` 的元素的后面,否则它将不会被识别。
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div id="app">
        <!-- 每次点击的时候给random赋一个值 -->
        <!-- if跟else配套用的,还有if跟else if。跟java的一样-->
        <!-- 判断成功的就显示,判断失效就不显示 -->
        <button v-on:click="random=Math.random()">点我呀</button>
        <span>{{random}}</span>

        <!-- random>= 0.75就会显示出来,下面的同理 -->
        <h1 v-if="random >= 0.75">
            看到我啦?!v-if >= 0.75
        </h1>

        <h1 v-else-if="random > 0.5">
            看到我啦?!v-else-if > 0.5
        </h1>

        <h1 v-else-if="random > 0.25">
            看到我啦?!v-else-if > 0.25
        </h1>

        <h1 v-else>
            看到我啦?!v-else
        </h1>

    </div>
    <script src="../node_modules/vue/dist/vue.js"></script>
    <script type="text/javascript">
        let app = new Vue({
            el: "#app",
            data: {
                random: 1
            }
        })
    </script>
</body>

</html>

 6.1、v-if结合v-for来时用

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>

    <div id="app">
        <ul>   
            <!-- 遍历数组 -->
            <!-- 1、显示user信息:v-for="item in items" -->
            <!-- items要被遍历的元素,item当前正在遍历的元素 -->
            <!-- 这里是我要遍历的data中的users, -->
            <!-- 第一个参数也可以加上括号,里面再写一个参数,表示的是当前正在遍历的元素的索引!是索引!第几个的那个下标 -->
            <!-- v-if只显示女生 -->
            <li v-for="(user,index) in users" :key="user.name" v-if="user.gender == '女'>

               当前索引:{{index}} ==>{{user}} ==> {{user.name}}  ==>   {{user.gender}} ==>{{user.age}} <br>
                <!-- 2、获取数组下标:v-for="(item,index) in items" -->
                <!-- 3、遍历对象:
                        v-for="value in object" 获取每一个对象的值
                        v-for="(value,key) in object" 获取每一个对象的键值对
                        v-for="(value,key,index) in object"  获取每一个对象的键值对+索引
                -->


                <!-- 遍历对象实操 -->
                <!-- 获取每一个对象的键值对+索引 -->
                对象信息:
                <span v-for="(v,k,i) in user">{{k}}=={{v}}=={{i}};</span>
                
                <!-- 4、遍历的时候都加上:key来区分不同数据,提高vue渲染效率 -->
                <!-- :key来区唯一的元素,区分每一个对象,跟每一个对象的不同 -->

            </li>

            
        </ul>

        <ul>
            <!-- 这里用:key,因为数字可能会重复,所以拿索引来区分唯一 -->
            <li v-for="(num,index) in nums" :key="index"></li>
        </ul>




    </div>
    <script src="../node_modules/vue/dist/vue.js"></script>
    <script>         
        let app = new Vue({
            el: "#app",
            data: {
                users: [{ name: '柳岩', gender: '女', age: 21 },
                { name: '张三', gender: '男', age: 18 },
                { name: '范冰冰', gender: '女', age: 24 },
                { name: '刘亦菲', gender: '女', age: 18 },
                { name: '古力娜扎', gender: '女', age: 25 }],
                nums: [1,2,3,4,4]
            },
        })
    </script>
</body>

</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/60972.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]计算机毕业设计基于JEE平台springboot技术的订餐系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Dcoker入门,小白也学得懂!

目录 一、Dcoker简介 二、Centos7安装Docker 三、Docker 容器运行原理解析 四、阿里云镜像仓库配置 一、Dcoker简介 1.1简单介绍 Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言 并遵从Apache2.0协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个…

【Java难点攻克】「海量数据计算系列」如何使用BitMap在海量数据中对相应的进行去重、查找和排序实战

BitMap&#xff08;位图&#xff09;的介绍 BitMap从字面的意思&#xff0c;很多人认为是位图&#xff0c;其实准确的来说&#xff0c;翻译成基于位的映射&#xff0c;其中数据库中有一种索引就叫做位图索引。 在具有性能优化的数据结构中&#xff0c;大家使用最多的就是hash…

LiteOS-M内核

简介 OpenHarmony LiteOS-M内核是面向IoT领域构建的轻量级物联网操作系统内核&#xff0c;具有小体积、低功耗、高性能的特点&#xff0c;其代码结构简单&#xff0c;主要包括内核最小功能集、内核抽象层、可选组件以及工程目录等&#xff0c;分为硬件相关层以及硬件无关层&…

[附源码]计算机毕业设计校园快递柜存取件系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

多线程复习——进程线程(上)

目录 一、进程是啥?跑起来的程序 二、进程是怎么管理的?描述组织 三、进程的PCB里有啥? 四、进程的调度是咋进行?时间管理大师 五、进程的独立性是咋回事? 六、进程之间如何通信? 一、进程是啥?跑起来的程序 进程(process) 也叫做 任务(task).对于操作系统来说 一个…

牛客网刷题(BC72、BC18、BC83、BC84、BC41、BC31、BC17、BC6)

目录 一、BC72 平均身高 二、BC18 计算带余除法​编辑 三、BC83 被5整除问题​编辑 四、BC84计算y的值 五、BC41 你是天才吗&#xff1f; 六、BC31 发布信息 七、BC17 计算表达式的值 八、BC6 小飞机 **太简单的题就没有文字叙述了~ 一、BC72 平均身高 #define _CRT_S…

[附源码]Python计算机毕业设计Django人体健康管理app

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

力扣(LeetCode)134. 加油站(C++)

贪心 考虑暴力&#xff0c;枚举所有点作为起点&#xff0c;每个点先加油&#xff0c;再尝试前往下一个点&#xff0c;剩余油量大于等于 000 &#xff0c;就可以走下去。枚举所有点的所有路径&#xff0c;时间复杂度 O(n2)O(n^2)O(n2) &#xff0c;对于本题规模 TLETLETLE 。 …

Redis常见错误

目录 一、(error) NOAUTH Authentication required. 二、(error) ERR unknown command keys* 三、(error) ERR invalid password 一、(error) NOAUTH Authentication required. 错误原因&#xff1a;没有使用密码登录认证 使用命令&#xff1a; auth 你自己的密码 如果密码…

【人工智能】确定型推理

确定性推理&#xff08;Deterministic Reasoning&#xff09;目录一、推理基本概念二、推理逻辑基础1. 命题逻辑&#xff08;Propositional Logic&#xff09;2. 谓词逻辑&#xff08;Predicate Logic&#xff09;3. 推理的控制策略(i) 推理方向(a) 正向推理&#xff1a;已知事…

[附源码]Python计算机毕业设计SSM教务一点通管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

制作一个简单HTML个人网页网页——人物介绍梵高(HTML+CSS)

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

c++中的cin和getline()函数

cin cin 输入接触到第一个非空格字符时开始阅读&#xff0c; 当遇到下一个空格字符&#xff08;空格、制表符、换行符&#xff09;时就会停止读取&#xff0c; #include<iostream> using namespace std;int main() {string s;printf("输入:\n");cin >>…

[论文阅读] 颜色迁移-颜色空间的选择

[论文阅读] 颜色迁移-颜色空间的选择 论文: [Colour Spaces for Colour Transfer] 本文将颜色迁移方法分为了2大类: 一是直接3D颜色迁移方法二是转换为3个1D颜色迁移方法 对于第二种方法, 颜色空间的选择对颜色迁移结果有很大的影响, 如下所示为 RGB 和 Lab 颜色空间的结果…

使用Express框架操作MongoDB数据库

前言 1、NoSQL数据库&#xff1a;非关系型数据库。数据的组织形式不是二维表格。即Not Only SQL&#xff0c;不能使用SQL语句操作数据。适合存储超大 规模、数据长度不确定的数据&#xff0c;数据没有规定的格式&#xff0c;不需要进行任何的设置就可以自由的横向扩展 2、什…

[附源码]计算机毕业设计校园服装租赁系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

G1D30-NLP(Tokenizer)DP(交叠子问题)

一、NLP &#xff08;一&#xff09;bert中一些标记 1、[SEP] 用于断句&#xff0c;其真实效果&#xff0c;有待考究&#xff0c;因为有segment embedding 2、[CLS] 生成一个向量&#xff0c;用来进行文本分类 &#xff08;二&#xff09;AutoTokenizer 关于tokenizer更…

JMeter入门教程(16)——非GUI运行

文章目录1.任务背景2.任务目标3.任务实操1.任务背景 JMeter的场景运行方式分为两种&#xff0c;一种是GUI&#xff08;视窗运行&#xff0c;即我们可以看到的运行界面&#xff09;方式&#xff0c;另一种是非GUI&#xff08;命令窗口&#xff09;方式运行&#xff0c;在Window…

HTML网页大作业代码【免费代码已上传】

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…