Vue相关基础知识(指令、过滤器、监听器)

Vueday4

Vue特性:

  • 数据驱动视图

    • 当页面数据发生变化时,页面会自动重新渲染

    • 数据驱动视图是单向的数据绑定

  • 双向数据绑定

    • 不需要手动操作DOM元素,来获取表单元素最新的值
    • 在网页中form表单负责采集数据,Ajax负责提交数据
    • js数据的变化,会被自动渲染到页面上
    • 页面上表单采集的数据发生变化时,会被vue自动获取到,并更新到js数据中

MVVM

Model 表示当前页面渲染时所依赖的数据源

View 表示当前页面所渲染的DOM结构

ViewModel 表示vue的实例,它是MVVM的核心

ViewModel作为MVVM的核心,将页面的数据源Model和页面结构View连接在了一起

内容渲染指令

渲染DOM元素的文本内容

  • v-text

    会覆盖标签内原有内容

  • {{ }}插值表达式

    内容占位符,使用最多

  • v-html

    可以渲染包含HTML标签的字符串

属性绑定指令

注:插值表达式只能用在元素的内容节点中,不能用在元素的属性节点中

为元素的属性动态绑定属性值则需要用到v-bind属性绑定指令

v-bind指令可以简写为:

事件绑定指令

v-on可以被简写为@

在绑定事件处理函数的时候 可以使用小括号实现传参

事件对象$event

vue提供了内置变量,名字叫做$event 它就是原生DOM的事件对象e

事件修饰符

<a href="http://www.baidu.com" @click.prevent="show">跳转到百度首页</a>

其中.prevent就是vue提供的阻止默认行为

双向绑定指令

v-model双向数据绑定指令,用来辅助开发者在不操作DOM的前提下,快速获取表单的数据

  • input输入框

  • textarea

  • select

与表单结合使用

V-model指令的修饰符

  • .number

    自动将用户输入值转为数值类型

  • .trim

    自动过滤用户输入的首尾空白字符串

  • .lazy

    在“change"时而非"input"时更新

条件渲染指令

  • v-show:动态为元素添加或移除display:none样式来实现元素的显示和隐藏

  • v-if:每次动态创建或移除元素,实现元素的显示和隐藏

  • 只要用到了v-for指令那么一定要绑定一个==:key属性==

  • 尽量将id作为key的值(key值的类型需要是字符串或数字类型,不可重复)

过滤器(2.0版本)

  1. 要定义到filters节点下,本质是一个函数
  2. 过滤器函数中一定要有return
  3. 在过滤器的形参中就可以获取到管道符前面的值
  4. 若全局过滤器和私有过滤器名字一致,则按照就近原则

私有过滤器和全局过滤器

若希望在多个vue实例之间共享过滤器则可以通过如下方式

首字母大写

1.第一个参数是全局过滤器的"名字"
2.第二个参数是全局过滤器的“处理函数”

Vue.filter('capitalize',function(str){
	return str.charAt(0).toUpperCase() + str.slice(1) + '~~'
})

侦听器

watch侦听器

允许开发者监听数据的变化,从而针对数据的变化做特定的操纵

  1. 方法格式的侦听器
    • 缺点1:无法在刚进入页面的时候,自动触发
    • 缺点2:如果侦听的是一个对象,若对象中的属性发生了变化,不会触发侦听器
const vm = new Vue({
	el:"#app",
	data:{username:''},
	watch:{
	// 监听username值的变化
	// newVal是变化后的新值,oldVal的变化之前的旧值
        username(newVal,oldVal){
            console.log(newVal,oldVal)
        }
	}
})
  1. 对象格式的侦听器
    • 好处1:可以通过immediate选项让侦听器自动触发
    • 好处2:可以通过deep选项,让侦听器深度监听对象中每个属性的变化
const vm = new Vue({
	el:"#app",
	data:{username:'admin'},
	watch:{
		//定义对象格式的侦听器
		username:{
			//侦听器的处理函数
			handler:function(newVal,oldVal){
				console.log(newVal,oldVal)
			},
			//一进页面先触发一次handler,默认值是false
			immediate:true
			//监听对象中每个属性是否变化,开启深度监听
			deep:true
		}
	}
})
const vm = new Vue({
	el:"#app",
	data:{
		info{
			username:'admin'
		}
	},
	watch:{
		//如果要侦听的是对象的子属性变化则包裹一层单引号
		'info.username'(newVal){
			console.log(newVal)
		}
	}
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值