05.过滤器filters

1.过滤器:作用是处理插值的,插值就是我们{{}}中的内容,在filters中我们可以定义一些过滤器(实际上是有特殊作用的方法)定义在filter中的方法就叫过滤器

2.如:我们需要给一个钱
加上单位:
首先定义一个元素显示钱的多少

05.过滤器filters
在data中将money的初始值定为100
05.过滤器filters
我们给money加上一个过滤器,这里过滤器的名字叫setMoney,并且接收一个值,这个值就是我们要处理的,然后返回这个值加上单位RMB
05.过滤器filters
最后在元素money后面加上|setMoney
05.过滤器filters
看一下效果:
05.过滤器filters
这样就通过使用过滤器的方式来给一个数值添加单位了

3.如果钱的数值过大,如12000000这样,为了使用户看起来非常简洁方便,怎么直接显示1200万呢?
思路:加上一个条件判断语句,如果大于10000,就将值除以10000,并且后面加上单位万RMB
05.过滤器filters
05.过滤器filters
4.过滤器可以叠加使用:
05.过滤器filters
05.过滤器filters
05.过滤器filters
5.完整代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>vue3:选项</title>
    <script src="./vue.js"></script>
    <style>
        body{
            background:#eee;
        };
        #app{
            background:#eee;
            margin: 10px;
            padding: 10px;
        }
        
       
    </style>
</head>
<body>
    <div id="app">
     <div>{{name}}</div>
     <div>{{sum}}</div>
     <div v-on:click="x+=1">点我x的值加一</div>
     <div>
         <!--这里v-model的number属性可以将字符串转换为数字类型-->
         <input type="text" v-model.number="x">
         <input type="text" v-model.number="y">     
     </div>
     <div>
         <input type="text" v-model.number="x">
         <select v-model="symbol">
             <option value="+">+</option>
             <option value="-">-</option>
             <option value="*">*</option>
             <option value="/">/</option>
             <option value="%">%</option>
         </select>
         <input type="text" v-model.number="y">     
         <span>={{sum}}</span>
     </div>

     <div>
         <div>{{money | setMoney}}</div>
     </div>

     <div>
         <div>{{like | setLike |setPerson}}</div>
     </div>
     
    </div>

    <script>
        var app = new Vue({
            el:"#app",
            data:{
                name:"vue选项",
                x:1,
                y:2,
                symbol:"+",
                money:12000000,
                like:6314321,
            },
            //过滤器:用来处理插值(插值即花括号中的内容)
            filters:{
                //在filter中我们可以定义一些过滤器(实际上是有特殊作用的方法)
                //定义在filter中的方法就叫过滤器
                setMoney:function(value){//接收一个值,代表我们要处理的数

                    if(value>=10000){
                        return (value/10000) + "万RMB";
                    }else{
                        return value + "RMB"
                    }
                    //在100后面加上单位可以通过过滤器来加
                    //return value + "RMB";
                },
                setLike:function(value){
                      
                            if(value<1000)
                            {
                                 return  value + "次";
                            }else if(value<10000 && value >=1000)
                                {
                                    //tofixed函数用于保留小数位个数,其参数是需要保留的位数
                                 return (value/1000).toFixed(2)+ "K次";
                            }else(value>=10000)
                            {
                                 return  (value/10000).toFixed(2) + "w次";
                            }      
                          
                        },
                setPerson:function(value){
                        return value + "人";
                }
                    
            },
            //侦听属性:用来观察data中的数据和计算属性中的数据,监听他们的变化
            watch:{
                //监听x的数据,当x值发生变化的时候,就会执行x的回调函数函数
                x:function(val,before){
                    console.log("x变化了");
                    //函数有两个参数,这两个参数是自定义的,这里val是变动之后的值
                    console.log(val);
                    //before是变动之前的值
                    console.log(before);
                },
                //监听sum的数据
                sum:function(val,before){
                    console.log("sum变化了");
                    //函数有两个参数,val是变动之后的值
                    console.log(val);
                    //before是变动之前的值
                    console.log(before);
                }
            },
            //计算属性
            computed:{
                sum:function(){
                  switch (this.symbol){
                      case "+":
                      return this.x+this.y;
                      break;
                      case "-":
                      return this.x-this.y;
                      break;
                      case "*":
                      return this.x*this.y;
                      break;
                      case "/":
                      return this.x/this.y;
                      break;
                      case "%":
                      return this.x%this.y;
                      break;
                  }
                }
            },
            methods:{
                btn:function(){

                }
            }
        });
    </script>
</body>
</html>

05.过滤器filters

上一篇:yii\filters\AccessControl 访问权限控制


下一篇:为CSS Visual Filters and Transitions 的动画添加自定义加速度