zoukankan      html  css  js  c++  java
  • Vue(六)-- 过滤器、常用内置指令、自定义指令

    1.过滤器

    --1.1使用过滤器显示格式化日期时间

    1. 定义过滤器
      Vue.filter(filterName,function(value[,arg1,arg2,...]){
      //进行一定的数据处理
      return newValue
      })
    2. 使用过滤器

    ----1.1.1代码示例

    可以传入格式化日期模板

    <body>
    	<div id="test">
    		<h2>
    			显示格式化的日期时间
    		</h2>
    		<p>{{date}}</p>
    		<p>{{date | dateString}}</p>
    		<p>{{date | dateString('YYYY-MM-DD')}}</p>
    	</div>
    	<script type="text/javascript">
    		//自定义过滤器
    		Vue.filter('dateString',function(value,format){//Vue为函数对象
    			return moment(value).format(format||'YYYY-MM-DD HH:mm:ss')
    		})
    		new Vue({
    			el:'#test',
    			data:{
    				date:new Date()
    			}
    		})
    	</script>
    </body>
    
    • 除了上述的格式化日期传参,还可以使用形参默认值
    Vue.filter('dateString',function(value,format='YYYY-MM-DD HH:mm:ss'){//Vue为函数对象
    				return moment(value).format(format)
    			})
    			new Vue({
    				el:'#test',
    				data:{
    					date:new Date()
    				}
    			})
    

    2.常用内置指令

    指令属性在解析之前还在在之后就没了

    • v:text 更新元素的textContent
    • v-html 更新元素的innerHTML
    • v-if 如果为true,当前标签才会输出到页面
    • v-else:如果为false,当前标签才会输出到页面
    • v-show: 通过控制display样式来控制显示/隐藏
    • v-for: 遍历数组/对象
    • v-on: 绑定事件监听,一般简写为@
    • v-bind:强制绑定解析表达式,可以省略b-bind
    • v-model:双向数据绑定
    • ref:指定唯一标识,vue对象通过$els属性访问这个元素对象

    --v-cloak:防止闪现,与css配合:[v-cloak]{display:none}

    • 何为闪现
      在页面的初次加载的过程中,会有'{{xxx}}'显示
    • 解决:使用v-clock
      利用了指令属性在Vue解析之前还在后面就消除的原理,和css搭配
      当Vue解析完成之后v-clock就消除了,自然css语句也就没了意义
    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title></title>
    		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    		<style type="text/css">
    			[v-cloak]{
    				dispaly:none;
    			}
    		</style>
    	</head>
    	<body>
    		<div id="example">
    			<p v-cloak>{{msg}}</p>
    		</div>
    	</body>
    </html>
    
    

    3.自定义指令

    指令名不包含‘v-’
    1.注册全局指令(针对所有的Vue实例)
    Vue.directive('my-directive',function(el,binging){
    el.innerHTML = binding.value.toupperCase()
    })
    2.注册局部指令(针对特定的实例)
    directives:{
    'my-directive':{
    bind(el,binding){
    el.innerHTML = binding.value.toupperCase()
    }
    }
    }
    3.使用指令
    v-my-directive='xxx'

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title></title>
    		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    	</head>
    	<body>
    		<div id="test1">
    			<p v-upper-text="msg1"></p>
    			<p v-lower-text="msg1"></p>
    		</div>
    		<div id="test2">
    			<p v-upper-text="msg2"></p>
    			<p v-lower-text="msg2"></p>
    		</div>
    		<script type="text/javascript">
    			// 指定全局指令
    			// el:指令属性所在的标签对象
    			// binding:包含指令相关信息数据的对象
    			Vue.directive('upper-text',function(el,binding){
    				console.log(el,binding)
    				el.textContent = binding.value.toUpperCase()
    			})
    			
    			new Vue({
    				el:'#test1',
    				data:{
    					msg1:'Hello World!'
    				}
    			})
    			new Vue({
    				el:'#test2',
    				data:{
    					msg2:'Just do it!'
    				},
    				//注册局部指令
    				deriectives:{
    					/* ES6语法
    					 'lower-text’(el,binding){
    					 	el.textContent = binding.value.toLowerCase()
    					 }
    					 */
    					'lower-text':function(el,binding){
    						el.textContent = binding.value.toLowerCase()
    					}
    				}
    			})
    		</script>
    	</body>
    </html>
    
  • 相关阅读:
    Marriage Match II 【HDU
    Leapin' Lizards [HDU
    稳定婚姻匹配问题
    Sabotage 【UVA
    动态树 学习
    Minimum Cost 【POJ
    Colourful Rectangle【扫描线】
    Get The Treasury【HDU-3642】【扫描线】
    Picture【HDU
    洛谷P1457 城堡 The Castle
  • 原文地址:https://www.cnblogs.com/psyduck/p/14362374.html
Copyright © 2011-2022 走看看