watch监听是什么,都是怎么用的

2021-10-14 11:09发布

18条回答
不吃鱼的猫
2楼 · 2021-10-15 14:47

第一种 普通监听

  

//监听   当userName值发生变化时触发

watch: {

    userName (newName, oldName) {

        console.log(newName)

    }

}


第二种 第一种有一个缺点 就是当值第一次绑定的时候 不会执行监听函数,只有当值改变的时候 才会执行,如果想在第一次绑定的时候执行此监听函数 则需要 设置 immediate为true

  

watch: {

    userName: {

        handler (newName, oldName) {

            console.log(newName)

        },

        immediate: true

    }

}


第三种深度监听 当要监听对象或数组的时候需要添加deep:true属性


靓猴一枚
3楼 · 2021-10-16 15:48

相关Html:

   

    名称案例

    [removed][removed]

 

    +

    =

   

 

 

[removed]

 

    var vm = new Vue({

 

        el: "#app",

        data: {

            firstname: "",

            lastname: "",

            fullname: ""

        },

        methods: {

            getFullname: function () {

//                this.fullname = this.firstname+this.lastname;

            }

        },

        watch: {

            //使用这个可以监听data中指定数据的变化,然后触发watch中对应的function的处理

            'firstname': function (newVal,oldVal) {

 

                console.log((newVal + "--" + oldVal));

            },

            'lastname': function (newVal,oldVal) {

                console.log((newVal + "--" + oldVal));

            }

 

        }

 

 

    })

 

 

[removed]

 

 


夏虫语冰
4楼 · 2021-10-17 11:48

$watch简单使用
$watch是一个scope函数,用于监听模型变化,当你的模型部分发生变化时它会通知你。

$watch(watchExpression, listener, objectEquality);
每个参数的说明如下:
watchExpression:监听的对象,它可以是一个angular表达式如'name',或函数如function(){return $scope.name}。
listener:当watchExpression变化时会被调用的函数或者表达式,它接收3个参数:newValue(新值), oldValue(旧值), scope(作用域的引用)
objectEquality:是否深度监听,如果设置为true,它告诉Angular检查所监控的对象中每一个属性的变化. 如果你希望监控数组的个别元素或者对象的属性而不是一个普通的值, 那么你应该使用它

我的网名不再改
5楼 · 2021-10-17 20:39

1.监听变量


  watch: {

    totalCount(value) {

      const totalPage = Math.ceil(value / this.pageSize);


      if (this.pageNo > totalPage) {

        this.pageNo = Math.max(1, totalPage);

      }

    }

  },



2.监听对象 deep:true(深度监听)


watch: {

    'formValues.mamsId': function(n, o) {

      if (n) {

        this.disabled = true;

      }

    },

    'formValues.relativeAlbum': {

      handler(n, o) {

        if (n.status > 1) {

          this.disabled = true;

        } else if (n.status === 1) {

          // 用户有切换数据类型的权限 并且切换没有提示

          this.disabled = false;

        }

      },

      deep: true

    }

  }


3.监听数组


data () {

    return {

        nameList: ['jiang', 'ru', 'yi']

    }

},

methods: {

    handleClick () {

        // 通过push,unshift等方法改变数组可以通过watch监听到

        this.nameList.push('瑶')

        // 直接通过数组下标进行修改数组无法通过watch监听到

        this.nameList[2] = '爱'

        // 通过$set修改数组可以通过watch监听到

        this.$set(this.nameList, 2, '张')

        // 利用数组splice方法修改数组可以通过watch监听到

        this.nameList.splice(2, 1, '蒋如意')

    }

},

watch: {

    nameList (newVal) {

        console.log(newVal)

    }

}



回答: 2021-11-17 11:31

1.监听变量


  watch: {

    totalCount(value) {

      const totalPage = Math.ceil(value / this.pageSize);


      if (this.pageNo > totalPage) {

        this.pageNo = Math.max(1, totalPage);

      }

    }

  },



2.监听对象 deep:true(深度监听)


watch: {

    'formValues.mamsId': function(n, o) {

      if (n) {

        this.disabled = true;

      }

    },

    'formValues.relativeAlbum': {

      handler(n, o) {

        if (n.status > 1) {

          this.disabled = true;

        } else if (n.status === 1) {

          // 用户有切换数据类型的权限 并且切换没有提示

          this.disabled = false;

        }

      },

      deep: true

    }

  }


3.监听数组


data () {

    return {

        nameList: ['jiang', 'ru', 'yi']

    }

},

methods: {

    handleClick () {

        // 通过push,unshift等方法改变数组可以通过watch监听到

        this.nameList.push('瑶')

        // 直接通过数组下标进行修改数组无法通过watch监听到

        this.nameList[2] = '爱'

        // 通过$set修改数组可以通过watch监听到

        this.$set(this.nameList, 2, '张')

        // 利用数组splice方法修改数组可以通过watch监听到

        this.nameList.splice(2, 1, '蒋如意')

    }

},

watch: {

    nameList (newVal) {

        console.log(newVal)

    }

}



附录:

Watch 与 computed的区别:


   Watch:watch用于观察和监听页面上的vue实例,当你需要在数据变化响应时,执行异步操作,或高性能消耗的操作,那么watch为最佳选择


  computed :可以关联多个实时计算的对象,当这些对象中的其中一个改变时都会触发这个属性具有缓存能力,所以只有当数据再次改变时才会重新


请叫我雷锋叔叔啊
6楼 · 2021-10-17 21:01

我们先编写数据 设置一个 parr 数组用来存放省份 并且存放各个省份的 id
再根据每个省的 id 设置一个 city 数组 用来存放每个省份所对应的城市 , 这么建立数据方便以后连接数据库时把数据改成数据库中取出的数据

首先先在页面中写两个下拉列表框 设置了 v-model="province" 监听 province 这里就用到了 watch 属性 建立方法他下拉列表框中的 "p.id" 与 city 中的进行对比赋值 这样就实现了两个下拉列表框的联动




第一种 普通监听

  

//监听   当userName值发生变化时触发

watch: {

    userName (newName, oldName) {

        console.log(newName)

    }

}

1

2

3

4

5

6

7

第二种 第一种有一个缺点 就是当值第一次绑定的时候 不会执行监听函数,只有当值改变的时候 才会执行,如果想在第一次绑定的时候执行此监听函数 则需要 设置 immediate为true

  

watch: {

    userName: {

        handler (newName, oldName) {

            console.log(newName)

        },

        immediate: true

    }

}

1

2

3

4

5

6

7

8

9

第三种深度监听 当要监听对象或数组的时候需要添加deep:true属性


回答: 2021-12-01 17:30

Watch:watch用于观察和监听页面上的vue实例,当你需要在数据变化响应时,执行异步操作,或高性能消耗的操作,那么watch为最佳选择 computed :可以关联多个实时计算

LERRR
8楼 · 2021-10-21 10:52

$watch简单使用
$watch是一个scope函数,用于监听模型变化,当你的模型部分发生变化时它会通知你。

$watch(watchExpression, listener, objectEquality);

那些年很冒险的梦。
9楼 · 2021-10-22 14:18

使用方法在vm实例中添加一个watch属性

watch:{//使用这个属性,可以监视data中数据的变化,然后触发这个watch中对应的处理函数

firstname:function(newval,oldval){

this.allname=newval+this.lastname

},

lastname:function(newval){

this.allname=this.firstname+newval

}

}

函数中的两个形参,第一个表示输入的新的值,后一个表示旧的值


相关问题推荐

  • 回答 120

    相对前几年来说,要高上不少了,毕竟入行的人也是越来越多了,基础的工作对应想要参与的人群基数越来越大,但是对于高端人才的需求还是很多,人才还是相对稀缺性的。所以,想要学web或者其他技术也一样,别等,别观望。web前端就业方向特别多包括web前端开发...

  • 回答 25

    相对定位和绝对定位是定位的两种表现形式,区别如下:一、主体不同1、相对定位:是设置为相对定位的元素框会偏移某个距离。2、绝对定位:absolute 脱离文档流,通过 top,bottom,left,right 定位。二、特点不同1、相对定位:在使用相对定位时,无论是否进行移...

  • 抓包是什么意思?2020-04-01 17:36
    回答 7
    已采纳

    抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。抓包可以通过抓包工具来查看网络数据包内容。通过对抓获的数据包进行分析,可以得到有用的信息。目前流行的...

  • 回答 89

    常用的前端框架有Bootstrap框架、React框架、Vue框架、Angular框架、Foundation框架等等

  • 回答 65
    已采纳

    前端是目的就业前景非常不错的一个计算机技术,但是自学的话还是有一定难度的,网络上自学是碎片化的,同时互联网技术跟新换代快,自己的话比较吃力也学习不到最新的技术。

  • SSR 是什么意思?2020-03-20 18:56
    回答 6

    SSR就是一台服务器,可以利用 SSR 在远程的服务器上配置 SSR,使其能够成为 SSR 节点,这样本地电脑或者其它设备利用 SSR 节点实现 VPN 或者远程上网及游戏加速等方面。ShadowsocksR(简称 SSR)是 Shadowsocks 分支,在 Shadowsocks 的基础上增加了一些数据...

  • 回答 52
    已采纳

    计算机培训方向比较多,建议找适合自己的方向选择培训编程类:JAVA、WEB、Python、C/C++、C#等测试类:软件测试运维类:云计算、网络安全设计类:UI设计、3D建模等

  • 回答 11

    1、代码判断xAxis: {type: 'time',splitLine: {show: false},interval: 3600, // 设置x轴时间间隔axisLabel: {formatter: function(value, index) {return liangTools.unix2hm(value)}}},首先要把xAxis 显示类型设置成time,然后设置对应X轴......

  • 回答 8

    HTML5 + CSS + JavaScript 开发 跨平台重用代码 

  • 回答 4

    采用rem单位自动响应,并提供独有栅格化系统快速定义宽高、边距节省css代码量,同时总结各大型移动端网页,提供一套ui颜色搭配规范,尺寸规范,字体规范等。

  • 回答 10

    iView UI、ioni、SUI

  • 回答 6

     jQTouch 

  • 回答 4

    如果只是普通的移动端用vue react 或者dva 如果是要编译成小程序什么的或者混生 就用uni-app(对应vue语法)taro(对应react) 或者纯原生 这个没有限制的,自己怎么舒服怎么来

  • 回答 4

    因为可以运用在网页和小程序的开饭中,而且开源,用着便宜,企业都很喜欢

  • 回答 10

    一、Visual Studio Code下载地址:https://code.visualstudio.com/微软在2015年4月30日Build 开发者大会上正式宣布了 Visual Studio Code 项目:一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台源代码编辑器。Visual Stud...

  • 回答 9

    jQuery自带淡入淡出效果 https://www.w3school.com.cn/jquery/jquery_fade.asp 看看这个 

没有解决我的问题,去提问