Vue笔记4:过滤器和监视改动

  • filter filters
    • 全局过滤器(所有组件有效):Vue.filter(''过滤器名,'过滤函数')
    • 组件内过滤器(组件内有效):Vue.filters(''过滤器名,'过滤函数')

代码:

<!DOCTYPE html>
<html>
<head>
    <title>过滤器</title>
</head>
<body>
    <div id="app"></div>
    <script type="text/javascript" src="./node_modules/vue/dist/vue.js"></script>
    <script type="text/javascript">

        var App = {
            template:`
                <div>
                    <input  type = 'text' v-model:value = 'myText'/>

                    <br>
                    过滤后数据为:{{myText  | reverse("中文版:") }}
                </div>
            `,
            data:function(){
                return {
                    myText:'',
                }
            },
            filters:{//组件过滤器
                reverse:function(dataStr,lang){
                    //打散成数组  反转  变字符串
                    return lang + dataStr.split('').reverse().join('');
                }
            }
        };

        // 全局过滤器  用法 {{ 'xxx' | myreverse('arg1') }}
        Vue.filter('myreverse',function(dataStr,arg1){
            return 'cccc';
        });

            new Vue({
                el:'#app',
                components:{
                    app:App,
                },
                template:'<app/>'
            });
    </script>
</body>
</html>

watch 单个

  • watch和v-model的区别
    • v-model仅仅是对数据双向绑定
    • watch 对符合匹配规则的数据进行函数处理
  • 对复杂数据建议使用computed 计算属性
    代码示例
<!DOCTYPE html>
<html>
<head>
   <title>Watch</title>
</head>
<body>
   <div id="app"></div>
   <script type="text/javascript" src="./node_modules/vue/dist/vue.js"></script>
   <script type="text/javascript">

       var App = {
           template:`
               <div>
                   <input  type = 'text' v-model:value = 'myText'/>

                   <br>
                   {{myText}}

                   <button @click=" stus[0].name='rose'; "> 对象或数组的监视 </button>
               </div>
           `,
           data:function(){
               return {
                   myText:'',
                   stus:[{
                           name:'song',
                       }],
               }
           },
           watch:{

               //obj或array数据类型的监视
               stus:{
                   deep:true,
                   handler:function(newDV,oldDV){
                       console.log(newDV,oldDV);
                   }
               },

               //简单数据类型的监视
               //key是data的属性
               myText:function(newV,oldV){
                   console.log(newV,oldV);
                   if(newV == 'steven'){
                       alert('ya ,i am the one');
                   }
               }
           }
       };

           new Vue({
               el:'#app',
               components:{
                   app:App,
               },
               template:'<app/>'
           });
   </script>
</body>
</html>

computed (计算属性)多个

  • computed:{ 监视的业务名:function(){ return 显示的内容 }}
    • 使用: {{ 计算属性的名称 }}
      代码示例:
<!DOCTYPE html>
<html>
<head>
    <title>Computed</title>
</head>
<body>
    <div id="app"></div>
    <script type="text/javascript" src="./node_modules/vue/dist/vue.js"></script>
    <script type="text/javascript">

        var App = {
            template:`
                <div>
                    <input type="text" v-model = "n1"/>
                        +
                    <input type="text" v-model = "n2"/>
                        *
                    <input type="text" v-model = "rate"/>
                        = {{result}}
                </div>
            `,
            data:function(){
                return {
                    n1:0,
                    n2:0,
                    rate:0,
                }
            },
            computed:{
                result:function(){
                    //监视对象,写在函数内部
                    //凡是函数内部有this.属性,改变都会触发当前函数
                    //this.n1   this.n2   this.rate
                    return ((this.n1-0) + (this.n2-0)) * (this.rate-0);
                }
            }
            
        };

            new Vue({
                el:'#app',
                components:{
                    app:App,
                },
                template:'<app/>'
            });
    </script>
</body>
</html>

总结

  • 可全局使用的有:组件/过滤器 (直接用,全局不带s)
  • 过滤器: function(原数据,参数1,参数2){ return 结果 }
    • 调用:{{ '数据' | 过滤器名(参数1,参数2) }}
  • watch单个监视
  • computed 群体监视
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.安装 可以简单地在页面引入Vue.js作为独立版本,Vue即被注册为全局变量,可以在页面使用了。 如果希望搭建...
    Awey阅读 13,814评论 4 129
  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 10,496评论 0 29
  • # 传智播客vue 学习## 1. 什么是 Vue.js* Vue 开发手机 APP 需要借助于 Weex* Vu...
    再见天才阅读 9,089评论 0 6
  • vue概述 在官方文档中,有一句话对Vue的定位说的很明确:Vue.js 的核心是一个允许采用简洁的模板语法来声明...
    li4065阅读 12,119评论 0 25
  • 1 东山镇有一条河流,据说河流与天界相连,千百年来,沧海桑田,唯有这条河流,始终安安静静地流淌在这里。 它见证了朝...
    音稀阅读 3,798评论 0 0

友情链接更多精彩内容