vue的过滤器和监听器

  1. vue的过滤器的作用是对数据进行处理后再展示

  2. 过滤器有全局过滤器和组件内过滤器

    • 全局过滤器:Vue.filter(‘过滤器名’, 过滤方式fn);
    • 组件内过滤器filters:{‘过滤器名’, 过滤方式fn};
    • {{ msg | 过滤器名}}
  3. 最终都是在过滤方式fn里面return产出最终需要的结果

  4. 过滤器的使用方式–组件内过滤器

    <!DOCTYPE html>
    <html>
    <head>
    	<title>filter指令</title>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
    	<div id="app">
    		<input type="text" name="" v-model="instring"><br>
    		输入的内容: {{ instring }} <br>
    		翻转的内容: {{ instring | reverseStr1()}}<br>
    		{{ instring | reverseStr2('翻转的内容: ')}}
    	</div>
    
    	<script type="text/javascript" src="vue.js"></script>
    	<script type="text/javascript">
    		new Vue({
    			el:'#app',
    			data: function(){
    				return {
    					instring: ''
    				}
    			},
    			filters: {
    				reverseStr1(str){
    					return str.split('').reverse().join('');
    				},
    				reverseStr2(str, param){
    					return param + str.split('').reverse().join('');
    				}
    			}
    		})
    	</script>
    </body>
    </html>
    
  5. 过滤器的使用方式–全局过滤器

    <!DOCTYPE html>
    <html>
    <head>
    	<title>filter指令--全局过滤器</title>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
    	<div id="app">
    		<input type="text" name="" v-model="instring"><br>
    		输入的内容: {{ instring }} <br>
    		翻转的内容: {{ instring | reverseStr1()}}<br>
    		{{ instring | reverseStr2('翻转的内容: ')}}
    	</div>
    
    	<script type="text/javascript" src="vue.js"></script>
    	<script type="text/javascript">
    		Vue.filter('reverseStr1', function(str){
    			return str.split('').reverse().join('');
    		})
    		Vue.filter('reverseStr2', function(str, param){
    			return param + str.split('').reverse().join('');
    		})
    
    		new Vue({
    			el:'#app',
    			data: function(){
    				return {
    					instring: ''
    				}
    			}
    		})
    	</script>
    </body>
    </html>
    
  6. 数据监听watch(监听单个)

  7. watch使用示例

    <!DOCTYPE html>
    <html>
    <head>
    	<title>watch指令</title>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
    	<div id="app">
    		<div>watch</div>
    		<input type="text" name="" v-model='msg'>
    	</div>
    
    	<script type="text/javascript" src="vue.js"></script>
    	<script type="text/javascript">
    		new Vue({
    			el:'#app',
    			data: function(){
    				return {
    					msg:''
    				}
    			},
    			watch:{
    				msg(newval, oldval){
    					//console.log(newval, oldval);
    					if('love' == newval){
    						alert(newval);
    					}
    				}
    			}
    			
    		})
    	</script>
    </body>
    </html>
    
  8. watch深度监听(监听一个对象(或数组)中属性的变化)

    <!DOCTYPE html>
    <html>
    <head>
    	<title>watch-deep指令</title>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
    	<div id="app">
    		<div>watch</div>
    		<input type="text" name="" v-model='msg.text'>
    	</div>
    
    	<script type="text/javascript" src="vue.js"></script>
    	<script type="text/javascript">
    		new Vue({
    			el:'#app',
    			data: function(){
    				return {
    					msg:{text:''}
    				}
    			},
    			watch:{
    				msg:{
    					handler(newval, oldval){
    						if('love' == newval.text){
    							alert(newval.text);
    						}
    					},
    					deep:true //开启深度监听
    				}
    			}
    			
    		})
    	</script>
    </body>
    </html>
    
  9. 计算属性computed(监听多个)

  10. computed的使用示例

    <!DOCTYPE html>
    <html>
    <head>
    	<title>computed指令</title>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
    	<div id="app">
    		<div>computed</div>
    		(<input type="text" name="" v-model='n1'> +
    		<input type="text" name="" v-model='n2'>) *
    		<input type="text" name="" v-model='n3'> = {{ result }}
    	</div>
    
    	<script type="text/javascript" src="vue.js"></script>
    	<script type="text/javascript">
    		new Vue({
    			el:'#app',
    			data: function(){
    				return {
    					n1: '',
    					n2: '',
    					n3: '1'
    				}
    			},
    			computed: {
    				result(){
    					return (Number(this.n1) + Number(this.n2)) * Number(this.n3);
    				}
    			}
    		})
    	</script>
    </body>
    </html>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值