首页 > 其他分享 >【Vue】如何watch v-for中的元素属性值

【Vue】如何watch v-for中的元素属性值

时间:2023-04-25 21:37:27浏览次数:29  
标签:Vue name 元素 watch 数组 监听 属性

 

如果你想watch一个v-for中的变量,你可以在vue组件的watch对象中创建一个函数,来监听这个变量。

假设你有一个数组items,它是一个对象数组,你想要监听每个对象的name属性。那么你可以这样写:

<template>
  <div v-for="item in items" :key="item.id">{{ item.name }}</div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: 'foo' },
        { id: 2, name: 'bar' },
        { id: 3, name: 'baz' }
      ]
    }
  },
  watch: {
    'items': {
      deep: true,
      handler(newVal, oldVal) {
        newVal.forEach((item, index) => {
          this.$watch(() => item.name, (newName, oldName) => {
            console.log(`item ${index}: ${oldName} -> ${newName}`)
          })
        })
      }
    }
  }
}
</script>

 

在这个例子中,我们定义了一个watch函数来监听items数组的变化。当数组中的某个元素的name属性发生变化时,这个函数就会被调用。

由于watch默认只监听对象的引用,而不会深层次地遍历对象内部的属性,因此我们需要将deep属性设置为true,这样watch会递归地监听数组内部的变化。

handler函数中,我们遍历newVal中的每个元素,并使用$watch函数来监听每个元素的name属性。在回调函数中,我们可以打印出旧值和新值,或者执行其他操作。

需要注意的是,每当数组中的元素发生变化时,watch都会重新创建这个元素的$watch函数,因此如果你在一个循环中有大量的元素,这可能会导致性能问题。如果你需要监听一个大型的数组,你可能需要使用一些优化措施,如debouncethrottle

标签:Vue,name,元素,watch,数组,监听,属性
From: https://www.cnblogs.com/144823836yj/p/17353939.html

相关文章

  • vue2项目中调取登录接口登录以后获取个人信息以后,储存在哪里,怎么在不同的页面展示想
    在Vue2项目中,可以将个人信息存储在Vuex状态管理中或者浏览器的本地存储中,具体取决于项目的需求和规模。1.Vuex状态管理在Vuex中定义一个user模块,用于存储用户信息,可以在登录成功后将用户信息存储到该模块中。```javascript//store/user.jsconststate={userInfo:null}......
  • vue 使用Element 的form表单如何校验对象中的对象属性?
    1、校验对象中的对象属性,需要特殊处理下:<templatev-if="form.dataType===0"><el-form-itemlabel="芯片类型"prop="configExtend.schemeVersion"><el-selectv-model="form.configExtend.schemeVersion&quo......
  • vue使用vue-qr生成二维码
    vue-qr基础使用:第一步,先安装vue-qr插件npminstallvue-qr--save第二步,在想要生成vueQr的Vue页面引入组件importvueQrfrom'vue-qr'第三步,在components中引入VueQr组件components:{VueQr}如下:<script>importVueQrfrom'vue-qr';exportdefault{componen......
  • React和Vue的区别
    React和Vue是两个非常流行的JavaScript框架,用于构建前端Web应用程序。以下是它们之间的一些区别:模板语法:Vue使用模板语法,它允许您在HTML模板中嵌入Vue代码,类似于AngularJS。React使用JSX语法,它允许您将JavaScript代码嵌入HTML模板中。数据绑定:Vue使用双向数据绑定,这意味着当......
  • c语言中的链接属性和存储类型
    链接属性external属性:不在代码块中的函数和变量在缺省情况下都属于external链接属性。具有external属性的变量或者函数在其他源文件中无论被包含多少次,都指向同一个实体。#a.cintx;-----------......
  • vue3+vite自适应PC端
    1、下载包pnpmaddlib-flexible-computerpostcss-px2rempx2rem-loader-D2、在main.ts里引入import"lib-flexible-computer";3、在vite.config.ts写入importpx2remfrom"postcss-px2rem"css:{postcss:{plugins:[px2rem({......
  • Vue3中slot插槽使用方式
    **********************************Vue3中slot插槽使用方式****************************************************参考:https://huaweicloud.csdn.net/638eab83dacf622b8df8d08c.html<templatev-slot:isFang></template>简写v-slot:isFang#isFang<template#isFan......
  • vue-element-admin报错Error: error:0308010C:digital envelope routines::unsupporte
    安装vue-element-admin报错 nodejs  Node.jsv18.15.0  opensslErrorStack:['error:03000086:digitalenveloperoutines::initializationerror'],library:'digitalenveloperoutines',reason:'unsupported',code:'ERR_OSSL......
  • java8 lambda 求list最大值、最小值、平均值、求和、中位数、属性排序(空指针异常,空值
    点击查看代码importorg.junit.Test;importjava.text.SimpleDateFormat;importjava.util.*;importjava.util.stream.Collectors;importstaticjava.util.Comparator.comparingLong;importstaticjava.util.stream.Collectors.*;/***@Author:*@Date:2018/12......
  • 动力节点老杜Vue框架教程【二】Vue核心技术
    Vue.js是一个渐进式MVVM框架,目前被广泛使用,也成为前端中最火爆的框架Vue可以按照实际需要逐步进阶使用更多特性,也是前端的必备技能动力节点老杜的Vue2+3全家桶教程已经上线咯!学习地址:https://www.bilibili.com/video/BV17h41137i4/视频将从Vue2开始讲解,一步一个案例,知识点......