1.表单操作

  (1)基于Vue的表单操作

    input    单行文本    处理方式就是使用 v-model双向绑定data中的数据 

1 <input type="text" v-model='uname'>

    radio        单选框     处理方式是先使用value属性给其赋值以便区分,之后再使用v-model双向绑定data中的数据

1 <input type="radio" id="male" value="1" v-model='gender'>
2 <label for="male">男</label>
3 <input type="radio" id="female" value="2" v-model='gender'>
4 <label for="female">女</label>

    checkbox  多选框     处理方式是先使用value属性给其赋值以便区分,之后再使用v-model双向绑定data中的数据,与单选框不同之处在于,所绑定的data数据应该为一个数组

1 <span>爱好:</span>
2 <input type="checkbox" id="ball" value="1" v-model='hobby'>
3 <label for="ball">篮球</label>
4 <input type="checkbox" id="sing" value="2" v-model='hobby'>
5 <label for="sing">唱歌</label>
6 <input type="checkbox" id="code" value="3" v-model='hobby'>
7 <label for="code">写代码</label>
1 data:{
2 uname:'lisi',
3 gender:1,
4 hobby:['1','2']
5 },

    select - option      下拉多选    处理方式是先在<option>标签中使用value属性给其赋值以便区分,之后在<select>标签中使用v-model双向绑定绑定data中的数据,与单选框以及多选框的区别在于既可以与data中所绑定的数据既可以是单个值也可以为一个数组,为单个值则表示单选,为一个数组则表示多选。

1 <select v-model='occupation' multiple='true'>
2 <option value="0">请选择职业...</option>
3 <option value="1">教师</option>
4 <option value="2">软件工程师</option>
5 <option value="3">律师</option>
6 </select>
1 data:{
2 uname:'lisi',
3 // 单选框为单个值
4 gender:1,
5 // 多选框为一个数组
6 hobby:['1','2'],
7 // select - option 单选就为一个值,多选就为一个数组
8 occupation:['1','2']
9 },

    textarea     多行文本    使用方式与单行文本相同,即使用v-model与data中的数据进行双向绑定即可

1 <textarea v-model='desc'></textarea>

   

  (2)表单域修饰符

    number   转化为数值

    trim      去掉开始和空格的结尾

    lazy       将input事件切换为change事件, 鼠标失去焦点后才会触发

1 <input type="text" v-model.number='age'>
2 <input type="text" v-model.trim='info'>
3 <input type="text" v-model.lazy='msg'>

2.自定义指令

  (1)为何需要自定义指令?

    内置指令不满足需求

  (2)定义的语法规则 

    全局指令定义

1 Vue.directive('自定义指令名称',{
2 // 自定义指令实现逻辑
3 })
1 Vue.directive('focus',{
2 inserted:function(el){
3 // el表示指令所绑定的元素
4 el.focus();
5 }
6 });

  

  (3)自定义指令用法

1 <input type="text" v-focus>

  (4)带参数的自定义指令(改变元素背景色)

  自定义指令中的函数会自动传入以下参数

  • el:指令所绑定的元素,可以用来直接操作 DOM。
  • binding:一个对象,包含以下 property:
    • name:指令名,不包括 v- 前缀。
    • value:指令的绑定值,例如:v-my-directive="1 + 1" 中,绑定值为 2
    • oldValue:指令绑定的前一个值,仅在 update 和 componentUpdated 钩子中可用。无论值是否改变都可用。
    • expression:字符串形式的指令表达式。例如 v-my-directive="1 + 1" 中,表达式为 "1 + 1"
    • arg:传给指令的参数,可选。例如 v-my-directive:foo 中,参数为 "foo"
    • modifiers:一个包含修饰符的对象。例如:v-my-directive.foo.bar 中,修饰符对象为 { foo: true, bar: true }
  • vnode:Vue 编译生成的虚拟节点。移步 VNode API 来了解更多详情。
  • oldVnode:上一个虚拟节点,仅在 update 和 componentUpdated 钩子中可用。
1 Vue.directive('color',{
2 bind:function(el,binding){
3 // 根据指令的参数设置背景色
4 // console.log(binding.value.color);
5 el.style.backgroundColor = binding.value.color;
6 }
7 })

  (5)指令的用法

1 <input type="text" v-color='msg'>

  (6)局部指令

 1 directives:{
2 color:{
3 bind:function(el,binding){
4 // 根据指令的参数设置背景色
5 // console.log(binding.value.color);
6 el.style.backgroundColor = binding.value.color;
7 }
8 },
9 focus:{
10 inserted:function(el){
11 el.focus();
12 }
13 }
14 }

3.计算属性

  为何需要计算属性?

    表达式的计算逻辑可能会比较复杂,使用计算属性可以使模板内容更加简洁

  

  计算属性的用法

1 computed:{
2 reverseString:function(){
3 return this.msg.split('').reverse().join('');
4 }
5 }

  计算属性与方法的区别

    计算属性是基于它们的依赖缓存的

    方法不需要缓存

4.侦听器

  (1)应用场景

    数据变化时执行异步或开销较大的操作

  (2)侦听器的用法

1 watch:{
2 firstName:function(val){
3 this.fullName = val + ' ' + this.lastName;
4 },
5 lastName:function(val){
6 this.fullName = this.firstName + ' ' + val;
7 }
8 }

    侦听的值:function(侦听的值){
        // 执行逻辑

    }

5.过滤器

  作用

    格式化数据,比如将字符串格式化为首字母大写,将日期格式化为指定的格式等

  自定义过滤器

    Vue.filter('过滤器名称',function(value){

        // 过滤器业务逻辑

    })

  过滤器的使用 

1 <div>{{msg | upper}}</div>
2
3 <div>{{msg | upper | lower}}</div>
4
5 div :abc='msg | upper'>测试数据</div>

  局部过滤器   

1 // 局部过滤器只能在本组件中使用
2 filters:{
3 upper:function(val){
4 return val.charAt(0).toUpperCase() + val.slice(1);
5 }
6 }

  带参数的过滤器

    Vue.filter('format',function(value,arg1){

        // value就是过滤器传递的参数

  })

  过滤器的使用

1 <div>{{date | format('yyyy-MM-dd')}}</div>

6.生命周期

  1.主要阶段

    挂载(初始化相关属性)

      beforeCreate

      created

      beforeMount

      mounted

    更新(元素或组件的变更操作)

      beforeUpdate

      updated

    销毁(销毁相关属性)

      beforeDestroy

      Destroyed

  2.Vue实例的生产过程

      ① beforeCreate 在实例初始化之后,数据观测和事件配置之前被调用。

      ② created 在实例创建完成后被立即调用。

        ③ beforeMount 在挂载开始之前被调用。

        ④ mounted el被新创建的vm.$el替换,并挂载到实例上去之后调用该钩子。

      ⑤ beforeUpdate 数据更新时调用,发生在虚拟DOM打补丁之前。

      ⑥ updated 由于数据更改导致的虚拟DOM重新渲染和打补丁,在这之后会调用该钩子。

      ⑦ beforeDestroy 实例销毁之前调用。

      ⑧ destroyed 实例销毁后调用。

3.Vue常用特性的更多相关文章

  1. Vue的常用特性

    Vue的常用特性 一.表单基本操作 都是通过v-model 单选框 1. 两个单选框需要同时通过v-model 双向绑定 一个值 2. 每一个单选框必须要有value属性 且value值不能一样 3. ...

  2. 第三节:Vuejs常用特性2和图书案例

    一. 常用特性2 1. 监听器 用watch来响应数据的变化, 一般用于异步或者开销较大的操作, watch 中的属性 一定是data 中 已经存在的数据!!! 当需要监听一个对象的改变时,普通的wa ...

  3. 第二节: Vuejs常用特性1

    一. 常用特性 1. 表单元素 通过 v-model指令绑定 输入框.单选/多选框.下拉框.文本框 2. 表单域修饰符 (1) .number:转换成数值,如果输入的是非数字字符串时,无法进行转换 ( ...

  4. Vue常用性能优化

    Vue常用性能优化 Vue常用的一些优化方式,主要是在构建项目过程需要注意的方面. 编码优化 避免响应所有数据 不要将所有的数据都放到data中,data中的数据都会增加getter和setter,并 ...

  5. 探索ASP.NET MVC5系列之~~~4.模型篇---包含模型常用特性和过度提交防御

    其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...

  6. ES6的一些常用特性

    由于公司的前端业务全部基于ES6开发,于是给自己开个小灶补补ES6的一些常用特性.原来打算花两天学习ES6的,结果花了3天才勉强过了一遍阮老师的ES6标准入门(水好深,ES6没学好ES7又来了...) ...

  7. MVC常用特性

    MVC常用特性使用   简介 在以前的文章中,我和大家讨论如何用SingalR和数据库通知来完成一个消息监控应用. 在上一篇文章中,我介绍了如何在MVC中对MongoDB进行CRUD操作. 今天,我将 ...

  8. C#网络程序设计(1)网络编程常识与C#常用特性

        网络程序设计能够帮我们了解联网应用的底层通信原理!     (1)网络编程常识: 1)什么是网络编程 只有主要实现进程(线程)相互通信和基本的网络应用原理性(协议)功能的程序,才能算是真正的网 ...

  9. Vue常用经典开源项目汇总参考-海量

    Vue常用经典开源项目汇总参考-海量 Vue是什么? Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的 ...

  10. C# XML序列化方法和常用特性

    /* C#对象XML序列化(一):序列化方法和常用特性 .Net Framework提供了对应的System.Xml.Seriazliation.XmlSerializer负责把对象序列化到XML,和 ...

随机推荐

  1. MySQL 5.7升级8.0过程(详解)

    记一次MySQL 5.7升级8.0的详细过程,聊聊我的思路,希望可以帮助大家. 以一个例子为切入点 一.升级背景 为什么要升级到MySQL8.0?大概多久进行一次? 大家可以参考下图记录的各个版本的发 ...

  2. C++ primer笔记 -数组和指针

    如果数组没有显示的提供元素的初始值,则数组元素会像普通变量一样的初始化: 1.在函数体外的内置类型的数组,其元素均初始化为0 2.在函数体内的内置类型的数组,其元素无初始化 3.如果为类类型,则不管位 ...

  3. python批量更改文件名并移动到新的文件夹

    python批量更改文件名并移动到新的文件夹 前言: 1. 这里的代码以批量命名如: 路径"E:\下载\1\xxxx.mp4"."E:\下载\2\xxxx.mp4&quo ...

  4. javaScript 获取对象数组的对象里面想要的属性,返回一个新的数组

    // obj 数组 或者 对象 // arr 要获取对象数组的对象的key数组 // addProperty 可以往对象数组的每一个对象添加一个新的属性 reducedFilter(obj, arr, ...

  5. 计数 dp 部分例题(一~五部分)

    一.状态设计和简化(状態をまとめる) 例题1:Unhappy Hacking 题意 有一个空串,可以进行下面三种操作: 在末尾加入一个 \(0\). 在末尾加入一个 \(1\). 删去末尾的数,如果串 ...

  6. Access denied You do not have access to chat.openai.com. The site owner may have set restrictions that prevent you from accessing the site.解决办法

    报错 Access denied You do not have access to chat.openai.com. The site owner may have set restrictions ...

  7. 统计学习导论(ISLR)(三):线性回归(超详细介绍)

    统计学习导论(ISLR) 参考资料: The Elements of Statistical Learning An Introduction to Statistical Learning 统计学习 ...

  8. MongoDB和sql语句的对照

    左边是mongodb查询语句,右边是sql语句.对照着用,挺方便. db.users.find() select * from users db.users.find({"age" ...

  9. 065_VFPage中CallBack回调函数的解释

    关于JS 的回调函数解释: https://blog.csdn.net/baidu_32262373/article/details/54969696 https://www.cnblogs.com/ ...

  10. 网络图片转InputStream,网络图片转MultipartFile,InputStream转MultipartFile

    头疼,不废话直接上代码 <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload --> ...