开发中,遇到了一个BUG,做的页面类似于 导航切换效果。两个组件传值。

上方导航组件   (主动)

左侧导航组件   (被动)

点击上方导航,左侧导航实现变换对应的栏目。

实现过程中,遇到了点问题。左侧导航组件监听不到 值变换。 研究了几天。最终问题解决了。

解决方案:

props: {
currIndex: {
type: String,
default: "3",
}
},
watch: {
currIndex: {
handler(newValue) {
//用户列表项排除掉
if (newValue === '2-4' || newValue === 'info' || newValue === 'editPassword' || newValue === 'loginOut') {
return;
}
//动态更改菜单项
newValue === "3" ? this.$data.leftMenu = this.$data.contract :
newValue === "2" ? this.$data.leftMenu = this.$data.system :
this.$data.leftMenu = [];
},
deep: true,
immediate: true
}
}

  

vm.$watch( expOrFn, callback, [options] )

  • 参数:

    • {string | Function} expOrFn
    • {Function | Object} callback
    • {Object} [options]
      • {boolean} deep
      • {boolean} immediate
  • 返回值:{Function} unwatch

  • 用法:

    观察 Vue 实例变化的一个表达式或计算属性函数。回调函数得到的参数为新值和旧值。表达式只接受监督的键路径。对于更复杂的表达式,用一个函数取代。

    注意:在变异 (不是替换) 对象或数组时,旧值将与新值相同,因为它们的引用指向同一个对象/数组。Vue 不会保留变异之前值的副本。

  • 示例:

    // 键路径
    vm.$watch('a.b.c', function (newVal, oldVal) {
    // 做点什么
    }) // 函数
    vm.$watch(
    function () {
    return this.a + this.b
    },
    function (newVal, oldVal) {
    // 做点什么
    }
    )

    vm.$watch 返回一个取消观察函数,用来停止触发回调:

    var unwatch = vm.$watch('a', cb)
    // 之后取消观察
    unwatch()
  • 选项:deep

    为了发现对象内部值的变化,可以在选项参数中指定 deep: true 。注意监听数组的变动不需要这么做。

    vm.$watch('someObject', callback, {
    deep: true
    })
    vm.someObject.nestedValue = 123
    // callback is fired
  • 选项:immediate

    在选项参数中指定 immediate: true 将立即以表达式的当前值触发回调:

    vm.$watch('a', callback, {
    immediate: true
    })
    // 立即以 `a` 的当前值触发回调

VUE处理 组件赋值 watch 监听不到赋值问题的更多相关文章

  1. vue 定义全局函数,监听android返回键事件

    vue 定义全局函数,监听android返回键事件 方法一:main.js 注入(1)在main.js中写入函数Vue.prototype.changeData = function (){ aler ...

  2. vue使用element-ui的el-input监听不了回车事件解决

    vue使用element-ui的el-input监听不了回车事件,原因应该是element-ui自身封装了一层input标签之后,把原来的事件隐藏了,所以如下代码运行是无响应的: <el-inp ...

  3. vue使用element-ui的el-input监听不了键盘事件解决

    vue使用element-ui的el-input监听不了键盘事件,原因应该是element-ui自身封装了一层div在input标签外面,把原来的事件隐藏了,所以如下代码运行是无响应的: <el ...

  4. vue 如何在循环中 "监听" 的绑定v-model数据

    vue 如何在循环中 "监听" 的绑定v-model数据 阅读目录 vue 如何在循环中 "监听" 的绑定v-model数据 1. 普通属性的值进行监听 2. ...

  5. vue解惑之v-on(事件监听指令)

    一.v-on指令 vue中用v-on指令来监听DOM事件,并触发相应的代码.比如v-on:click,表示监听了点击事件. 二.事件修饰符 在事件处理函数中调用 event.preventDefaul ...

  6. Vue框架(二)——Vue指令(v-once指令、v-cloak指令、条件指令、v-pre指令、循环指令)、todolist案例、Vue实例(计算、监听)、组件、组件数据交互

    Vue指令 1.v-once指令  单独使用,限制的标签内容一旦赋值,便不可被动更改(如果是输入框,可以主动修改) <!DOCTYPE html> <html lang=" ...

  7. 浅谈VUE,使用watch方法监听父组件传到子组件的数据。

    props:['updateData'], data(){ return{ form: { _name:'', }, } }, 第一步接收数据: props:['updateData']   第二步动 ...

  8. Vue获取dom和数据监听

    Vue获取dom对象 在js和jq中我们都能获取dom对象例如 // 获取id=1的div标签 <div id=d1>dom对象</div> // js语法 let ele = ...

  9. React和Vue中,是如何监听变量变化的

    React 中事件监听 本地调试React代码的方法 先将React代码下载到本地,进入项目文件夹后yarn build 利用create-react-app创建一个自己的项目 把react源码和自己 ...

随机推荐

  1. label 的for属性总结

    一.使用介绍 1. 定义:for属性规定label与哪个表单元素绑定. <label>是专门为<input>元素服务的,为其定义标记. label 和表单控件绑定方式有两种: ...

  2. sentinel详解

    https://segmentfault.com/a/1190000002680804 sentinel端口 port #工作路径 dir "/usr/local/redis-6380&qu ...

  3. activiti-用户与用户组

    https://my.oschina.net/acitiviti/blog/283892 activiti学习笔记3-用户与用户组 收藏 安世博 发表于 3年前 阅读 5507 收藏 10 点赞 0 ...

  4. php实现ZIP压缩文件解压缩

    测试使用了两个办法都可以实现: 第一个:需要开启配置php_aip.dll <?php //需开启配置 php_zip.dll //phpinfo(); header("Content ...

  5. visual studio 找不到模板信息

    问题: 创建项目提示“ 找不到visual studio模板信息” 解决方案: 打开Visual Studio  在菜单->工具->选项->项目和解决方案-> "Vi ...

  6. Jenkins结合shell脚本实现(gitLab/gitHub)前端项目自动打包部署服务器

    原始发布部署: 石器时代的我们,先是本地打包好项目,在去服务器上把原来的文件删了,然后回到本地copy到服务器: 这操看起来简单,实际部署的人就知道多烦了,假如来几个项目都要重新发布:那就爽了: 今天 ...

  7. DocumentBuilderFactory.newInstance() 异常解决

    现象: objc[27212]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk ...

  8. shogun docker image 中import shogun error

  9. linux常用命令 grep命令

    linux grep命令 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配行打印出来 grep 全称 Grobal Regular Expression Pr ...

  10. ubuntu 服务restart失败

    在ubuntu使用时碰到的一个问题,修改了nginx服务的配置文件后,重启服务,显示 * Restarting nginx nginx                                  ...