vue App.vue里的公共组件改变值触发其他组件或.vue页面监听

栏目: JavaScript · 发布时间: 6年前

内容简介:解决方案我是用vuex数据仓库来存储词条的,当词条改变时,修改数据仓库里的词条然后在.vue页面里监听这个词条,当词条改变时触发请求数据的事件
业务场景重现

现在我的App.vue里面有一个头部的公共组件,头部组件里有一个输入框,当我输入词条时,将词条传进App.vue里的<router-view>里的.vue页面,并进行查询获取数据

解决思路如下:

1.如何拿到头部的词条

2.当词条改变时如何触发.vue里的请求数据事件

解决方案

我是用vuex数据仓库来存储词条的,当词条改变时,修改数据仓库里的词条

然后在.vue页面里监听这个词条,当词条改变时触发请求数据的事件

代码

数据仓库store.js

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    searchKey: ''       //存库词条的变量
  },
  mutations: {                 //修改数据仓库的事件
    changeSearchKey(state,value){
      state.searchKey = value
    }
  },
  actions: {                 //推荐使用的异步修改数据仓库
    setSearchKey(context,value){   
      context.commit('changeSearchKey',value)
   }
  }
})

App.vue里的header组件

goSearch: function(){
            if(this.value){
                this.$store.dispatch('setSearchKey',this.value)  //当输入词条时,将词条更新到数据仓库
            }
        },

vue页面里监听词条

computed: {                     监听词条
        getSearchKey(){
            return this.$store.state.searchKey
        }
    },
    watch: {
        getSearchKey: {
            handler(newValue,oldValue){  //当词条改变时执行事件
                this.recordis(newValue)
                // console.log('new',newValue)
                // console.log('old',oldValue)
            }
        }

    },

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

信息乌托邦

信息乌托邦

桑斯坦 / 毕竞悦 / 法律出版社 / 2008-10-1 / 28.50元

我们被无限的媒体网从四面包围,如何能够确保最准确的信息脱颖而出、并且引起注意?在本书中,凯斯•R. 桑斯坦对于积蓄信息和运用知识改善我们生活的人类潜能,展示了深刻的乐观理解。 在一个信息超负荷的时代里,很容易退回到我们自己的偏见。人群很快就会变为暴徒。伊拉克战争的合法理由、安然破产、哥伦比亚号航天载人飞机的爆炸——所有这些都源自埋于“信息茧房”的领导和组织做出的决定,以他们的先入之见躲避意见......一起来看看 《信息乌托邦》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具