vue 自定义指令,过滤器

1.数组复习

<script type="text/javascript">
	/*
		循环出10-100的10个数
	*/

	//声明一个空数组
	let arr = [];
	for(var i=0;i<10;i++){
		arr[i] = Math.floor((Math.random()*90)+10);
	}
	//console.log(arr);
	//冒泡排序
	for(var i = 0;i<arr.length;i++){
		for(var i2 = i+1;i2<arr.length;i2++){
			if(arr[i]>arr[i2]){
				var tmp = arr[i];
				arr[i] = arr[i2];
				arr[i2] = tmp;
			}
		}
	}
	console.log(arr);
</script>

 

2.过滤器

<body>
	<div id="app">
		<!-- 2021/06/02 => 2021-06-02 -->
		<!-- 使用过滤器  要过滤的值 | 过滤器方法 -->
		<!-- 如果有多个过滤器 只需要把 前边的返回结果作为要过滤的值 -->
		{{time | f1 | f2}}
	</div>
</body>
<script type="text/javascript">
	new Vue({
		el:"#app",
		data:{
			time:"2021/06/02"
		},
		methods:{

		},
		filters:{
			//在过滤器中声明方法
			//过滤器中形参存储的是要过滤的值
			f1(val){
				//console.log(val);
				//var newTime = val.replace("/","-");
				//split()  把字符串分割成数组   / => [2021,06,02]
				//将改变后的值,返回即可
				var arr = val.split("/");
				//console.log(arr);
				//return newTime;
				//join
				var str = arr.join('-');
				//console.log(str);
				return str;

			},
			f2(val){
				//console.log(val);
				return '当前的日期是:'+val;
			}
		}
	})
</script>

3.

<body>
	<div id="app">
		<!-- 
			指令: 类似于 js中的函数
				函数:
					1.系统函数
					2.自定义函数
			vuejs中的指令语法是  v-xxx 在使用的时候可以直接使用 
				<元素 v-xxx></元素>

			
			使用自定义指令需要写 v-自定义的指令名
			自定义指令的指令值 只能是变量 或 布尔值
		 -->
		 <p v-demo="word">这是一个p标签</p>
		 <button @click="change()">变</button>
	</div>
</body>
<script type="text/javascript">
	new Vue({
		el:"#app",
		data:{
			word:'abc'
		},
		methods:{
			change(){
				this.word = 'def';
			}
		},
		//自定义指令的声明
		directives:{
			//定义自定义指令名
			//demo就是自定义的指令名 不需要要使用v-xxx声明
			'demo':{
				//钩子函数:在满足某种条件时,会自动触发的函数,就是钩子函数
				//bind函数,什么时候会调用? 在使用自定义指令的时候会自动调用
				bind(el,binding){
					/*
						参数1:绑定该自定义指令的元素标签
						参数2:
							name   'demo'  自定义指令名
							rawName: "v-demo" 指令
							value: "abc"  自定义指令的指令值
					*/
					console.log(binding);
					//console.log('执行了');
				},
				//钩子函数
				//在更改自定义指令值的时候会自定调用
				update(el,binding){
					/*
						参数1:绑定该自定义指令的元素标签
						参数2:
							name   'demo'  自定义指令名
							rawName: "v-demo" 指令
							value: "def"  更改后的值
					*/
					console.log('update方法');
					console.log(binding);
				}
			}
		}
	})

</script>

 

4.

<body>
	<div id="app">
		<button @click="fun()">走你</button>
		<p v-demo="bool">这就是一个屁</p>
	</div>
</body>
<script type="text/javascript">
	/*
		实现一个v-show指令相同的功能
			按钮(点击)
			元素(显示|隐藏)
			找元素.display = none
			找元素.display = block
	*/
	new Vue({
		el:"#app",
		data:{
			bool:true
		},
		methods:{
			fun(){
				this.bool = !this.bool;
			}
		},
		//自定义指令的声明
		directives:{
			'demo':{
				bind(el,binding){


				},
				update(el,binding){
					//console.log(binding);
					if(binding.value){
						el.style.display = 'block';
					}else{
						el.style.display = 'none';
					}
					
				}
			}
		}
	})

</script>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值