vue与iframe配合
需求说明
有很多人是这么说的,有vue,还用jquery干嘛,还用iframe干嘛。
vue强大不可否认,但是就因此认为在vue中不需要使用其他前端工程的方法,这是不对的。
源代码构成
一段大于3000行的js代码,主要是前端svg绘图,操作包括jquery、jquery-ui 创建、更改、删除svg节点,以及多种方式查看、修改节点属性,响应请求,
一段200行左右的js代码,自定义插件,基于原型链,主要用于暂存svg绘图的内容
一段css文件,未压缩状态1000多行
任务计划
需要将整个项目代码基于vue和vuex重构,时间不充裕也很难解决前端绘图各种响应,只能最简单的方式,将这一部分移植到iframe中,节约时间并完整保留功能
需要功能
vue 父级向 iframe 子级传递参数
<iframe id="iframe" ref="iframe" :src="`../../../static/xxx.html?id=${this.id}`" frameborder="0" width="100%" height="100%" scrolling="no" ></iframe>
其中,iframe 引用的html文件必须放在static目录下,this.id 是要传递的参数
在 iframe里获取传的id
console.log(location.search);
1
iframe 调用 父级 vue 的函数
首先要在vue里声明函数,并挂到window上
created(){ window['go'] = () => { this.go(); }; }, methods: { go(){ //do somthing... } },
这段代码声明了一个函数名为go的函数,并在created里将其赋给window,名字仍为 go
在iframe 里调用该函数
window.parent.go();
这样就能调都在父级vue里声明的函数go