vue组件和iframe之间的传值-传值总结

前情提要:由于项目需要,我需要引入一个报表的插件。插件只能使用html的方式调用。
所以,我把插件的使用封装了一个html页面,vue项目则利用iframe的方式引入。
在项目进行过程中,需要iframe和vue组件之间的传值。暂时做个笔记。

vue组件传值:

 <el-main>
        <iframe
          id="mainIframe"
          ref="mainIframe"
          name="mainIframe"
          style="height:100%;width:100%;border-width: 0px;"
          src="src/scoreTempleteInfoDelics.html"
          @load="loaded"
        />
      </el-main>

生命周期内传值到iframe:

   const mapFrame = this.$refs["mainIframe"];
   var idObj=1;
      if (mapFrame.attachEvent) {
        // 兼容浏览器判断
        mapFrame.attachEvent("onload", function () {
          const iframeWin = mapFrame.contentWindow;
          iframeWin.postMessage(idObj, "*");
        });
      } else {
        mapFrame.onload = function () {
          const iframeWin = mapFrame.contentWindow;
          iframeWin.postMessage(idObj, "*");
        };
      }

vue组件接受值:

   window.onmessage = (e) => {
        console.log(e.data);
    };

iframe传值到vue 组件:

function sendInfo(val) {
    window.parent.postMessage(val, '*');
}

iframe接收值

window.addEventListener('message', function (messageEvent) {
    var data = messageEvent.data;
    console.log(data)
})
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue组件中,v-model可以用于实现子组件与父组件之间的双向数据绑定。具体的传值过程如下: 1. 在子组件中,使用props来定义需要接收的value参数。例如props: { value: [String, Object] }。 2. 在子组件中,使用watch来深度监听value的变化。可以设置immediate为true,以便在初始化时立即改变监听的值。例如watch: { value: { handler: function(val, oldVal) { this.videoForm.showVideoPath = val; }, deep: true, immediate: true } }。 3. 子组件中的某个事件(例如上传成功的回调函数)需要通过$emit("input", 值)来将值传递给父组件的v-model。例如this.$emit("input", res.url)。 在父组件中,使用v-model来绑定子组件的值。例如<video-upload v-model="form.videoDz" />。 总结起来,v-model传值的过程包括在子组件中定义props来接收value参数,在watch中监听value的变化,并通过$emit("input", 值)来将值传递给父组件的v-model。在父组件中使用v-model来绑定子组件的值。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Vue——父子组件通过v-model传值和显示](https://blog.csdn.net/weixin_42247720/article/details/127650801)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [vue父子组件v-model传值](https://blog.csdn.net/libinemail/article/details/123826501)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值