Vue常用指令,事件行为,表单提交

1:指令介绍

用官方话来说就是 html 的特殊属性

HTML的属性是什么?

就是写在HTML的开始标签中 以 属性=“属性值” 的写法完成的

他的作用是用来扩展HTML标签的功能

举例:< img/> 标签,如果我就这样写,那么它什么也不是,但是当我加上 src=”… …“的时候它就能显示一张图片

指令 就是带有v-前缀的特殊属性, 如昨天学习的v-on, v-model

写在哪:任意 HTML 元素的开始标签内

2:vue常见指令

v-text——→ 作用:设置标签的文本值(textContent),<p v-text=”mes”></p> 标签内的所有内容都会被替换,或者使用双大括号表达式在标签内部取值也行;

v-html——→ 作用:设置标签的innerHTML值,如果是普通的文本,和v-text没有区别,如果数据中有标签的话,使用html将会解析为标签,而text只会解析成文本;

v-model —→ 作用:用于在表单元素中 关联模型数据 从而实现双向数据绑定(重点)

v-show —–→ 作用:控制一个元素的显示和隐藏(元素通过display:none来控制显示隐藏)

v-on —— → 作用:就是给vue来绑定事件的,可以省略,使用@代替

v-for ——→  作用:遍历data中的数据

v-bind —→  作用: 给网页中的html元素绑定属性,可以省略使用:代替

v-if ———→ 作用: 判断是否加载页面元素

v-else ——→ 作用:配合这v-if来对元素进行显示和隐藏

3:指令使用

注意:指令指向的都是data中声明的属性

1:双向绑定

v-model能轻松实现表单输入和应用状态之间的双向绑定

双向绑定指的是我们在vue实例中的data与其渲染的dom元素上的内容保持一致,两者无论谁被改变,另一方也会相应的更新为相同的数据

语法: v-model = ‘变量’

变量必须在data中进行声明

注意:v-model 指令只能用在<input>, <select>,<textarea>等这些表单元素上

 

2:条件渲染

条件渲染,根据表达式的真假来插入和删除元素,实现对标签的显示和隐藏,

实现条件渲染的指令是 v-if ,v-else;  v-show

两组都可以实现标签的显示和隐藏,有什么区别呢?

<p v-if=”true”>内容</p>

v-if的值为true时显示标签,为false时移除标签

v-else指令为v-if添加一个“else块”,v-else元素必须立即跟在v-if元素的后面,否则不能被识别

v-else 后面不需要表达式

v-if为true,后面的v-else不会渲染到HTML

v-if为false,后面的v-else才会渲染到HTML

 

v-show 为true时显示标签的内容,为false时则将display设置为none,实现对标签的影藏。

经验:如果需要频繁切换使用 v‐show 较好,如果在运行时条件不大可能改变 使用v‐if 较好

案例:2个P标签内容分别是表白成功和表白失败,一个按钮实现切换,在p标签内使用指令控制显示和隐藏,注意指令的值来自于data中。

  <div id="app">
    <p v-if="ok">表白成功</p>
<p v-else>表白失败啦</p>
<p v-show="ok">ok</p>
<p v-show="!ok">fail</p>
    <button>切换</button>
  </div>

  <script >
    new Vue({
      el: '#app',
      data: {
        ok: true
      }
    })
  </script>

3:列表渲染

v-for 实现data中数组的遍历。

语法:v-for="(item, index) in users" :key="index"
Users: 即将要遍历的data中的数组
In : 固定关键字
Item : 从数组中取出的每一个对象
Index : 下标

需求1:在vue的data中准备一个用户数组,里面的数据无所谓,在vue管理的范围内,使用列表标签和v-for指令实现对数组的遍历,再使用大括号表达式取出值。

注意:遍历时,v-for所在的标签,每一次遍历都会创建对应的标签。

需求2:遍历完成后,在每一行的后面加一个删除按钮,点击删除时,可以将当前行的数据删除掉。

分析:使用@click绑定事件,在绑定的时候将当前行数据的下标传递过去,然后根据下标进行删除,删除完成之后,要跟新data中的数组。

Vue中删除数组中指定下标的值,数组名.splice(index, num);   index表示从哪里开始删除,num表示删几个。

4:事件行为

1:阻止事件冒泡

有一种现象,存在2个div, 一个div包含另外一个div,2个div都有自己的事件,如下图

 

 

 

红色部分是外面的事件,蓝色部分是里面的事件,点击红色时发现外面的事件执行,这样是正常的,当点击蓝色背景时,里面的事件执行,同时外面的事件也执行了,

这样的现象就是事件冒泡,显然这样是不合理的,我们希望点击蓝色的背景时,仅仅执行蓝色部分的事件,现在就需要阻止事件冒泡。

Vue对这样的事件冒泡给出了很好的解决方案:@click.stop ="functionname"

在绑定事件的时候,加.stop 就很友好的解决了事件的冒泡

2:阻止事件默认行为

场景: 有一个a链接,href属性指向一个有效的地址,同时这个标签也有一个事件,此时点击的话会先执行事件,然后跳转到指定的地址。

阻止事件的默认行为:a链接不管什么事件都会执行跳转,这个就是默认行为,如果仅仅想执行事件的方法,不希望跳转的话,则需要阻止事件的默认行为。

Vue给出了很好的解决方法,在绑定事件时,这样写:@click.prevent="functionname"

5: 表单数据的收集

开发的时候经常会遇到表单,设计表单的话就需要收集数据。Vue使用v-model会自动完成对表单数据的收集。

案例:注册时,收集输入框,单选框,多选框,下拉框,文本框的内容。

注意:

1:一般出现input时,都会使用v-model指令实现数据的双向绑定,有了v-model则不需要name的属性了,可以理解v-model就是name的属性。

2:v-model的属性值,一定要在vue实例的data中进行声明才能使用;

3:案例中不希望提交表单,表单的submit属性会自动提交表单到指定的地址,不希望提交的话,则需要阻止事件的默认行为,

当点击注册时,访问具体的方法,在该方法中实现对数据的收集,然后发送ajax 请求

4:单选框v-model的值如果没有在data中初始化的话,因为没有name,那就不是单选框了,value必须要有,如果需要有默认选中效果的话,直接在初始化时写上value的值即可;

5:下拉框的v-model应该写在select上,真正提交的是option中的value的值,初始化时在data中创建数组,使用循环指令遍历即可。

不管是v-model 的值还是下拉框中的数组都要在data中进行初始化。注意value要想识别表达式的话需要在前面加冒号:。

红色部分是外面的事件,蓝色部分是里面的事件,点击红色时发现外面的事件执行,这样是正常的,当点击蓝色背景时,里面的事件执行,同时外面的事件也执行了,

这样的现象就是事件冒泡,显然这样是不合理的,我们希望点击蓝色的背景时,仅仅执行蓝色部分的事件,现在就需要阻止事件冒泡。

Vue对这样的事件冒泡给出了很好的解决方案:@click.stop ="functionname"

在绑定事件的时候,加.stop 就很友好的解决了事件的冒泡

2:阻止事件默认行为

场景: 有一个a链接,href属性指向一个有效的地址,同时这个标签也有一个事件,此时点击的话会先执行事件,然后跳转到指定的地址。

阻止事件的默认行为:a链接不管什么事件都会执行跳转,这个就是默认行为,如果仅仅想执行事件的方法,不希望跳转的话,则需要阻止事件的默认行为。

Vue给出了很好的解决方法,在绑定事件时,这样写:@click.prevent="functionname"

5: 表单数据的收集

开发的时候经常会遇到表单,设计表单的话就需要收集数据。Vue使用v-model会自动完成对表单数据的收集。

案例:注册时,收集输入框,单选框,多选框,下拉框,文本框的内容。

注意:

1:一般出现input时,都会使用v-model指令实现数据的双向绑定,有了v-model则不需要name的属性了,可以理解v-model就是name的属性。

2:v-model的属性值,一定要在vue实例的data中进行声明才能使用;

3:案例中不希望提交表单,表单的submit属性会自动提交表单到指定的地址,不希望提交的话,则需要阻止事件的默认行为,

当点击注册时,访问具体的方法,在该方法中实现对数据的收集,然后发送ajax 请求

4:单选框v-model的值如果没有在data中初始化的话,因为没有name,那就不是单选框了,value必须要有,如果需要有默认选中效果的话,直接在初始化时写上value的值即可;

5:下拉框的v-model应该写在select上,真正提交的是option中的value的值,初始化时在data中创建数组,使用循环指令遍历即可。

不管是v-model 的值还是下拉框中的数组都要在data中进行初始化。注意value要想识别表达式的话需要在前面加冒号:。

 

作业 : 计算属性,指令 写2遍,

预习:事件行为,表单数据的收集, 脚手架内容(安装得,你不要安装)

拓展作业:

作业:不让表单直接提交,点击提交的时候,访问具体的方法add(),在方法内部 ,实现数据的收据, 弹出一个框,框内的数据就是表单中的数据

表单中有:   username, pwd, sex(单选框), 民族(下拉框),hobby(多选框)

 

posted @ 2022-03-15 21:06  这题我不会  阅读(360)  评论(0)    收藏  举报