Vue之监听属性

2023-11-18

一,什么是监听属性

        监听属性是Vue.js提供的一种用来监听和响应Vue实例中的数据变化的方式。在监听数据对象中的属性时,每当监听的属性发生变化,都会执行特定的操作。监听属性可以定义在watch选项中,也可以使用实例方法vm.$watch()。

        在watch选项中定义监听属性的示例代码如下:

<script>
        var vm = new Vue({
            el: '#app',
            data: {
                fullname: '韦小宝'
            },
            watch: {
                fullname: function (newValue, oldValue) {
                    alert('原值:' + oldValue + '新值:' + newValue)
                }
            },


        })
        vm.fullname = '宋小宝'

    </script>

运行结果如图:

 

        上述代码中,在watch选项中对fullname属性进行了监听。当改变该属性值的时候,会执行对应的回调函数,函数中的两个参数newValue和oldValue分别表示监听属性的新值和旧值。其中,第二个参数可以省略。

        使用实例方法vm。Swatch()定义监听属性的示例代码如下: 

<script>
        var vm = new Vue({
            el: '#app',
            data: {
                fullname: '韦小宝'
            },
        })
        vm.$watch('fullname', function (newValue, oldValue) {
            alert('原值:' + oldValue + '新值:' + newValue)
        });
        vm.fullname = '宋小宝'
    </script>

        上述代码中,应用实例方法vm.$watch()对fullname属性进行了监听。运行结果跟上图一致。

        应用监听属性实现人民币和美元之间的汇率换算,代码如下:


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>人民币和美元汇率换算</title>
<script src="../JS/vue.js"></script>
</head>
<body>
<div id="example">
	¥:<input type="number" v-model="rmb"><p>
    $:<input type="number" v-model="dollar"><p>
	{{rmb}}人民币={{dollar | formatNum}}美元
</div>
<script type="text/javascript">
var exam = new Vue({
	el:'#example',
	data:{
		rate : 6.8,
		rmb : 0,
		dollar : 0
	},
	watch : {
		rmb : function(val){
			this.dollar = val / this.rate;//获取美元的值
		},
		dollar : function(val){
			this.rmb = val * this.rate;//获取人民币的值
		}
	},
	filters : {
		formatNum : function(value){
			return value.toFixed(2);//保留两位小数
		}
	}
})
</script>
</body>
</html>

运行结果如图:

 

二,deep选项 

        如果要监听的属性值是一个对象,为了监听对象内部值的变化,可以在选项参数中设置deep选项的值为true。示例代码如下:

<script>
        var vm = new Vue({
            el: '#app',
            data: {
                shop: {
                    name: 'iphone 14',
                    price: 5699
                }
            },

            watch: {
                shop: {
                    handler: function (val) {
                        alert(val.name + '新价格为' + val.price + '元');
                    },
                    deep: true
                }
            }
        })
        vm.shop.price = 6599
    </script>

        运行结果如图:

 

 当监听数据是一个数组或者对象时,回调函数中的新值和旧值是相等的,因为这两个形参指向是同一个数据对象

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue之监听属性 的相关文章

  • 如何更改传单中功能集的样式?

    我正在看等值区域的例子 https leafletjs com examples choropleth https leafletjs com examples choropleth 这是他们使用的数据源 type Feature prop
  • 取消html5浏览器中的单图请求

    我正在动态加载 大 图像以绘制到 html5 画布中 如下所示 var t new Image t onload t src http myurl 但每隔一段时间就会想取消图片请求完全地 我想出的唯一方法是设置src to i e t sr
  • HTML/VBA Click 事件未触发

    这是我第一次在 StackOverflow 上发布问题 到目前为止 我已经能够通过 VBA 帮助论坛解决我的大部分问题 我的问题很简单 我有一个自动数据拉取 我需要在其中导出数据 我过去曾在这方面取得过成功 但这次略有不同 我尝试单击以生成
  • 访问sendBeacon发送的数据

    文档表明sendBeacon通过发送其数据HTTP POST request 但在 PHP 中 POST变量似乎是一个空数组 这是我的 JavaScript 代码 navigator sendBeacon beacon log php My
  • 动态速度计 javascript 或 jquery 插件

    我希望有动态ajax插件在页面上显示速度计 一个想法是我设置一个背景并旋转针 有人知道相关插件吗 这里有一些供您参考 http bernii github com gauge js http bernii github com gauge
  • 网站 YouTube 嵌入视频不断播放

    我正在使用 youtube 提供的 iframe 在我的网站上嵌入视频 我还使用了一个 css 弹出窗口 这是我从这个页面学到的http www pat burt com web development how to do a css po
  • VBA / HTML / jQuery 选择自动完成 - 在列表中选择

    我正在尝试使用 Excel 中的 VBA 在网站的列表中选择一个值 这不是一个 正常列表 该网站使用 jQuery 选择自动完成 如下所示 example http davidwalsh name demo jquery chosen ph
  • 在Javascript中按降序对字符串进行排序(最有效)?

    W3Schools 有这个例子 var fruits Banana Orange Apple Mango fruits sort fruits reverse 这是在 Javascript 中按降序对字符串进行排序的最有效方法吗 Updat
  • 动画进度元素值

    我有一个progress元素 该元素如下所示 div class container div div div
  • Ember.js 处理 View 事件后转换到路由

    Setup 我有一个 Ember 应用程序 支持使用 Imgur API 上传图像 我已经有一个工作路线和模板来处理任何 Imgur ID 但我想在上传新图像后转换到此路线 使用返回的 Imgur ID 这是该应用程序的相关部分 http
  • Leaflet js虚构地图

    我是 Leaflet 的新手 我想了解如何创建完全交互式的虚构地图 我有一张图像想要转换为传单地图 该图像基本上像图表一样具有许多连接和点 我想首先将该图像转换为地图 能够将鼠标悬停在这些点上 突出显示它们并显示有关它们的信息 并且还可以在
  • 检查 touchend 是否在拖动后出现

    我有一些代码可以更改表的类 在手机上 有时表格对于屏幕来说太宽 用户将拖动 滚动来查看内容 但是 当他们触摸并拖动表格时 每次拖动都会触发 touchend 如何测试触摸端是否是触摸拖动的结果 我尝试跟踪dragstart和dragend
  • jquery window.open 在 ajax 成功中被阻止

    尝试在我的 ajax 成功调用中打开一个新的浏览器窗口 但是 它被阻止为弹出窗口 我做了一些搜索 发现用户事件需要绑定到 window open 才能避免这种情况发生 我还找到了这个解决方案 您可以在 ajax 之前打开一个空白窗口 然后在
  • 在d3.js中将2D形状转换为3D,并根据ANGULAR中的值调整高度

    我正在使用 d3 js v6 创建以下 2D 图表表示的 3D 图表 这个圆圈中有多个正方形 每个正方形都根据值分配了一种颜色 值越大 正方形越暗 现在我想将其转换为 3D 形状 其中当值变高时 只有特定正方形的高度会增加 因此结果在某种程
  • Typeahead.js substringMatcher 函数说明

    我只是在做一些研究Typeahead js这是一个非常酷的图书馆 感谢文档 我已经成功地获得了一个基本的示例 该文档也非常好 但是我试图弄清楚以下代码块实际上在做什么 var substringMatcher function strs r
  • 如何使JavaScript函数在Eclipse“大纲视图”中可见?

    我有这样的代码 但如果它在匿名函数中定义 则无法打开函数大纲 类没有问题 我该如何概述something2 请分享一些提示 我可以将所有函数标记为构造函数 但这是无效的方法 start of track event required deb
  • vue-test-utils:如何测试 Mounted() 生命周期挂钩中的逻辑(使用 vuex)?

    我正在尝试为 Vue 中的逻辑编写一个单元测试mounted 生命周期钩子 但运气不太好 问题似乎是这样的mounted 使用 vue test utils 安装组件时永远不会被调用mount 这是我要测试的 Vue 组件
  • 如果数字小于 10,则显示前导零 [重复]

    这个问题在这里已经有答案了 可能的重复 JavaScript 相当于 printf string format https stackoverflow com questions 610406 javascript equivalent t
  • 防止文本区域出现新行

    我正在开发聊天功能 使用 Vue 并使用文本区域作为输入 以便溢出换行 并且对于编写较长消息的用户来说更具可读性 不幸的是 当用户按下 Enter 键并提交时 光标会在提交之前移动到新行 从而使用户体验感觉不佳 关于如何使用普通 Javas
  • 在 Javascript 中减少/分组数组

    基于this https stackoverflow com a 40774906 3254598例如 我想以稍微不同的方式按对象进行分组 结果应该如下 key audi items make audi model r8 year 2012

随机推荐

  • 为什么要接入高防IP,到底有什么作用呢

    首先我们要了解什么是高防IP DDOS高防IP是为了应对互联网的DDOS攻击而产生的一款付费增值产品 根据不同的业务接入的方法也不同 在开通这款DDOS高防IP时服务商会给到对应的高防IP作为对外IP和业务IP使用 游戏业务就需要将之前配置
  • rknn-toolkit安装的一点感想

    rknn toolkit装了好多次 总是会报错 终于尝试出了一个版本可以用的 注意windows和linux上都能用 rknn toolkit v1 7 1 cuda 10 1 python 3 6 pytorch 1 5 1 opencv
  • Ubuntu Hadoop分布式部署

    Ubuntu Hadoop分布式部署 1 vim usr local hadoop 3 2 2 etc hadoop hadoop env sh usr local hadoop 3 2 2为Hadoop安装目录 export JAVA H
  • Android-使用WebView视图显示网页

    简介 Android提供了WebView组件 相关类为android webkit WebView android webkit WebViewClient 表面上来看 这个组件与普通的ImageView差不多 但实际上 这个组件的功能要强
  • ProGuard参数使用说明

    ProGuard 使用说明 本文主要是翻译proguad的官方文档 以便以后使用的时候不需要再次去看英文 每次写proguard总是那么痛苦 必须写个博客记录一下 有些地方的意思我也不懂 有注明原文 什么是proguard proguard
  • 微信程序 自定义遮罩层遮不住底部tabbar解决

    一 先上效果 二 方法 1 自定义底部tabbar 实现 https developers weixin qq com miniprogram dev framework ability custom tabbar html 官网去抄 简单
  • 使用Flask开发简单接口

    使用Flask开发简单接口 作为测试人员 在工作或者学习的过程中 有时会遇到没有可以调用的现成的接口 导致我们的代码没法调试跑通的情况 这时 我们使用python中的web框架Flask就可以很方便的编写简单的接口 用于调用或调试 在之前的
  • 数据挖掘实验(四):决策树归纳 R语言

    一 实验目的 决策树分类算法 decision tree 通过树状结构对具有某特征属性的样本进行分类 其典型算法包括ID3算法 C4 5算法 C5 0算法 CART算法等 本次实验掌握用ID3的信息增益来实现决策树归纳 二 实验软件 Rst
  • java中单列集合的根接口是_java 单列集合总结

    Collection 接口 add remove contains clear size 迭代器遍历 普通迭代器 不能再遍历过程中修改集合的长度 List接口 单列集合 有序可重复 有索引 add index obj remove inde
  • keras中的sequential模型

    序贯模型 Sequential 单输入单输出 一条路通到底 层与层之间只有相邻关系 没有跨层连接 这种模型编译速度快 操作也比较简单 model Sequential Sequential模型的核心操作是添加layers 图层 以下展示如何
  • LVM条带卷

    4 4 2 创建条带卷 如果有大量连续读 写操作 创建条带逻辑卷可提高数据 I O 的效率 有关条带卷的常规信息 请查看 第 2 3 2 节 条带逻辑卷 创建条带逻辑卷时 可使用 lvcreate 命令的 i 参数指定条带数 这样就决定了逻
  • 数据库中delete和drop的区别

    delete 作用于数据上 即对数据进行删除 不修改表结构 例 delete from STU where sno S001 表示从学生表中删除学号为S001的学生 此过程并不破坏表结构 drop 可对数据库 表以及字段进行修改 操作涉及修
  • Linux·进程权限控制

    Linux系统的安全性得益于其进程权限和文件权限的控制机制 今天抽空梳理下Linux下的进程权限控制相关的文件权限涉及一点 首先明确四个名词 真实用户ID real ID 有效用户ID effective ID 保存用户ID Saved I
  • list泛型总结 Map<String, Collection<?>> result = new HashMap<>(6);集合list1 instanceof Collection

    package com gang import java util public class Harbor007 public static void main String args Calendar calendar Calendar
  • 查看python已安装模块的方法小结

    随着使用python的时间越来越长 安装的python模块也越来越多 时间久了都不记得自己之前到底对自己的电脑做过些什么了 于是乎就想要查看一下自己安装的python模块 现将查看方法总结如下 一 命令行下使用pydoc命令 在命令行下运行
  • 2023年人工智能GPT-4时代,最新13个ChatGPT商业市场AIGC应用正在掀起革命性变革!

    目录 前言 ChatGPT商业应用 LLM是星辰大海 1 研究背景 1 1 研究背景 1 2 研究方法 2 商业应用和案例分析 2 1 工具层 ChatGPT 搜索 ChatGPT 办公 ChatGPT 教育 2 2 行业层 ChatGPT
  • Pyramid Vision Transformer: A Versatile Backbone for Dense Prediction without Convolutions

    A 问题 首先 对于dense prediction tasks 完全无卷积的的transformer backbone少有人研究 而VIT作为用在图像分类任务的完全transformer结构 很难直接应用于像素级别的dense predi
  • JAVA中io流常见异常_javaAPI_IO流基础_异常

    异常 1 异常的概述和分类 java中的异常有一个超类Throwable 然后其有俩个子类接口Error和Exception 其中Error是严重问题 这一个是程序中无法解决的 而另一个 Exception则是一般问题 Exception又
  • Android 模拟器打开错误 :x86 emulation currently requires hardware acceleration!

    第一次配置完成 Android 下载 模拟器进行打开使用时 发生错误 x86 emulation currently requires hardware acceleration 如图所示 问题分析 x86 emulation 仿真器 模拟
  • Vue之监听属性

    一 什么是监听属性 监听属性是Vue js提供的一种用来监听和响应Vue实例中的数据变化的方式 在监听数据对象中的属性时 每当监听的属性发生变化 都会执行特定的操作 监听属性可以定义在watch选项中 也可以使用实例方法vm watch 在