开发所用 Vue 版本 2.6.11

子组件 coma 中两个属性:

props: {
url: {
type: String,
default: ''
},
oriurl:{
type: String,
default: ''
}
}

再增加两个 watch 监听这两个属性,如有变化通知父组件:

watch: {
url (nval) {
this.$emit('update:url', nval)
},
oriurl (nval) {
this.$emit('update:oriurl', nval)
},
},

父组件内使用 sync 监听属性变化:

<coma :url.sync="purl" :oriurl.sync="poriurl"></coma>

当子组件内同时修改 urloriurl 时,父组件中仅 purl 接收到了新值, poriurl 没变化

//coma 组件内
this.url = "new url";
this.oriurl = "new oriurl";

经排查, oriurlwatch 未触发,不中断点。

解决方法

  1. 改成延迟触发

    watch: {
    url (nval) {
    this.$nextTick(()=>{
    this.$emit('update:url', nval)
    })
    },
    oriurl (nval) {
    this.$nextTick(()=>{
    this.$emit('update:oriurl', nval)
    })
    },
    },

    猜测是因为 urlwatch 内, emit 执行后,导致本次事件循环 event loop 跳过了其他 watch 方法

  2. 或者不使用 watch ,在修改后马上执行 $emit

    //coma 组件内
    this.url = "new url";
    this.oriurl = "new oriurl";
    this.$emit('update:url', nval)
    this.$emit('update:oriurl', nval)

tag

vue watch emit 不执行 两个 多个

本文地址:https://zhouxc.notion.site/Vue-watch-64f7942e40f54d8f8b59fe144dc4e2f8

Vue 中 watch 的一个坑的更多相关文章

  1. 记录vue中一些有意思的坑

    记录vue中一些有意思的坑 'message' handler took 401ms 在出现这个之前,我一直纠结于 是如何使用vue-router或者不使用它,通过类似的v-if来实现.结果却出现这个 ...

  2. 使用ffmpeg视频编码过程中踩的一个坑

           今天说说使用ffmpeg在写视频编码程序中踩的一个坑,这个坑让我花了好多时间,回头想想,非常多时候一旦思维定势真的挺难突破的.以下是不对的编码结果:                   ...

  3. 在Vue中遇到的各种坑 及性能提升

    Vue: (1)    没有再模板里引用data数据,会不会引起update.beforeUpdate生命周期函数的执行? 不会 (2)组件改成异步 (3)v-once (4)如果不用template ...

  4. 在VS2012中GridView的一个坑

    使用GridView的时候遇到了一个坑,一个增加一个选择按钮~貌似在某些情况下会出现一个是否允许选择的属性,貌似会默认为fals,然后就返回不了指定ID!坑,巨坑!但是今天居然找不到这个属性了,难道是 ...

  5. vue中的小踩坑(01)

    前言: 昨天算是使用vue2.0+element-ui做了一点小小的页面,可是源于其中遇到的问题,特地整理一下,以防自己还有其他的小伙伴们继续踩坑. 过程:         1.不知道大家有没有注意到 ...

  6. vue中使用vue-i18n 一个简单的国际化操作

    1.安装:npm install vue-i18n --save-dev 2.在main.js文件中引入: import VueI18n from 'vue-i18n' Vue.use(VueI18n ...

  7. 在vue中使用vuex 一个简单的实例

    1.安装vuex:npm install vuex --save 2.在main.js文件中引入vuex (请忽略其它代码) 3.建一个vuex文件夹,然后在建一个store.js(这两个文件名字可以 ...

  8. U3D中的又一个坑

    using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; pu ...

  9. Vue中调用另一个组件中自定义事件

    之前在一个场景中,遇到组件需要调用父组件中的方法tableInit(),字组件调用父组件常用的有三种方法,具体参考:https://www.cnblogs.com/jin-zhe/p/9523782. ...

随机推荐

  1. 语言算子&模糊推理

    一.语言算子 语言算子分为三类: ①语气算子 ②模糊化算子 ③判定化算子 (1)语气算子 "集中化算子":--"很"."极"."非 ...

  2. Thoughtworks Technology Radar #26 技术雷达26期

    Thoughtworks Technology Radar #26 Techniques Adopt Four key metrics Google Cloud's DevOps Research a ...

  3. java中到底什么是继承?

    1.何为继承?What is Inheritance? 在上图中,对于车来讲,汽车就是子类.对于汽车来讲,奔驰就是子类.车是汽车的基类,超类,或说父类.到底什么是继承?马克-to-win,子类把父类的 ...

  4. Java中数组的定义与使用(代码+例子)

    学习目标: 掌握一维数组的使用 学习内容: 1.一维数组的定义 数组(Array),是把具有 相同类型 的多个常量值 有序组织 起来的一种数据形式.这些按一定顺序排列的多个数据称为数组.而数组中的每一 ...

  5. 升级DLL plugin 到AutoDllPlugin

    为了使打包构建速度加快使用的DLLPlugin,但是我们还是需要手动把dll文件引入文件, HTMLwebpackplugin 结合autoDLLplugin可以自动引入打包文件, 十份地方便

  6. Python入门-字符串格式化

    一.不推荐使用:%号 #正常按照位置传递参数 print('%s asked %s to do something' % ('egon', 'lili')) #先后顺序不能乱 #字典传递参数 prin ...

  7. Java学习day36

    元注解:负责注解其他注解,Java定义了4个标准的meta-annotation类型,用来提供对其它annotation类型作说明 1.@Target:用于描述注解的使用范围(即被描述的注解可以用在什 ...

  8. 一行代码的魅力 -- css

    <template> <div></div> </template> <script> export default { } </sc ...

  9. 新手小白入门C语言第二章:基本语法

    1. 语句 C 语言的代码由一行行语句(statement)组成.语句就是程序执行的一个操作命令.C 语言规定,语句必须使用分号结尾,除非有明确规定可以不写分号. 如: int x = 1; 这就是一 ...

  10. python黑帽子(第三章)

    Windows/Linux下包的嗅探 根据os.name判断操作系统 下面是os的源码 posix是Linux nt是Windows 在windows中需要管理员权限.linux中需要root权限 因 ...