vue:多重嵌套的子组件调用父组件方法

vue中子组件调用父组件一般用emit方式,如下:

父组件:
methods:{
	fathermethod(param){
		console.log(param)
	}
}

子组件:
this.$emit("fathermethod",param)

对于多层嵌套的父子组件,用emit会无效.
可使用provide/inject方式:

父组件:
  data () {
    return {
    }
  },
  methods: {
     XXXX(param){
     }
  },
 
  provide() {
    return {
      fatherMethod: this.XXXX,
    };
  },

子组件:
 data () {
    return {
    }
  },
 inject: ["fatherMethod"],

 调用处: this.fatherMethod(param);

补充:这样设置后,可能出现v-model不更新的情况.
此时可用this.$set(对象,字段,值)的方式设置,如:

this.$set(this.$refs.searchTopRef.searchdata, 'alarmIds', id)

你可能感兴趣的:(vue.js,javascript,前端,父子组件)