页面树结构
转至元数据结尾
转至元数据起始

正在查看旧版本。 查看 当前版本.

与当前比较 查看页面历史

« 前一个 版本 7 下一个 »

接下来要介绍的是DWF表单控件家族中一个“很能打”的成员——超级控件,它基本原理是直接将一个完整的html页面,或者是一个vue文件编译成html页面,放到DWF的后端Web服务器中,然后在表单里用iframe方式嵌入画布区里。

这使得超级控件可以将各种的效果嵌入到表单中,比如:日历、词云、地图、甚至三维模型嵌入进去,所以,叫它超级控件,比如这样的效果:

图-利用超级控件嵌入三维地球地图

或者,这样的效果

图-利用超级控件嵌入日历

“切~,不就是一个iframe嵌入嘛,有什么了不起“,一般有点”水平“的前端程序员们可能会这么觉得,事实上,自超级控件一开始的时候也就是这么一回事,但是....

你把超级控件想简单了,事实上,一放到实践中被甲方们按在地上摩擦,你就会发现一堆问题,比如:

  • 我能在操作里给超级控件传递数据吗?
  • 我怎么将数据加载到这个超级控件里?
  • 超级控件能得到表单里的其他控件并且控制他们的行为吗?
  • 超级控件能够在用户点击的时候弹出你DWF的表单吗?

所以,超级控件内部其实还有一些技能,一般不做到这个份上,是不会想到滴....,好,接下来就说一下这些技能,还是举一个例子吧,比如我们希望实现这样的效果:


在超级控件里通过window.parent.dwf_ctx获得一个针对DWF上下文的句柄,是一个变量,这个变量的功能和脚本里的this基本一样,在脚本调用和插件调用的对应关系这一页面里列出了所有dwf_ctx支持的调用和脚本的函数之间的对应关系。

可以看到,有了dwf_ctx就可以完成之前说的很多事情了,例如,如果你希望加载数据:


除了上面介绍的内容以外,DWF的表单引擎还为超级控件提供了一个收藏打包带走的能力,也就是说,你可以写一个超级控件,然后在其他表单里反复使用它,不仅如此,还可以把这个超级控件打包到模型包里,发给你小伙伴,是不是有种:“瞬间电翻一众小迷妹的感觉?”

  • 无标签