目录
1. WebControl内的HTML如何调用原生公共服务
很多情况下我们需要在原生的页面中嵌入H5来实现我们的页面展示,这也是我们解决一些问题的技巧,比如:集成复杂图表时、某种协议展示时、展示PDF和Word文档时以及其它类似HTML的页面或用HTML页面实现更简单时等等。
1.1. WebControl内的HTML如何调用原生公共服务
HTML需引用以下JS
<script src="js/Frameworks/iuapmobile.frameworks.core-2.7.0.js" type="text/javascript" charset="utf-8"></script>
注意引用路径是否正确,可到native目录找到文件用浏览器打开,查看引用路径是否正确
路径和WebControl中的html目录层级有关,请注意
1.2. WebControl内的HTML能调用哪些原生公共服务
在WebControl的HTML中,按照1.1中引用了相关的JS后就可以调用原生服务了。
原则上可以调用所有的公共服务,例如:
- $cache
- $service
- $camera
- $scaner
- $file
- $view
。。。
。。。 - $ctx
需要指出的是:
- $ctx可以在HTML中的任何时机调用,但是却未必能获取你想要的数据。
- 要想通过$ctx来获取Context中的数据,需要在JSController加载完数据后再访问之。
因此绝大多数场景应是在JSController获取数据后(例如在onload或callAction的callback中)再通过$js.runjs方法调用HTML中的js方法,在HTML的js方法中再访问$ctx来获取$ctx中的数据
2. WebControl内的HTML如何访问原生控件
2.1. 依赖的JS引用
<script language="JavaScript" src="../Frameworks/iuapmobile.native.all.js" ></script>
注意引用路径是否正确,可到native目录找到文件用浏览器打开,查看引用路径是否正确
路径和WebControl中的html目录层级有关,请注意
2.2. 访问原生控件的API
同JSCOntroller访问原生控件的API保持一致,如下:
$id("xxx").get(attr)
$id("xxx").set(attr, value)
需要指出的是:
- 要想通过$id来获取原生控件,需要JSController的onload事件之后才能访问
- 因此绝大多数场景应是在JSController的onload事件方法通过$js.runjs方法调用HTML中的js方法,在HTML的js方法中再访问$id来获取原生控件的数据。
3. 原生JSController如何调用WebControl内的HTML的JS方法
有两种调用方法:
$js.runjs({
"controlid" : "webcontrol0",//webControl的id
"func" : "xxx()"//要执行位于webControl中的js方法名
})
或者
$service.call("UMJS.runjs", {
"controlid" : "webcontrol0",//webControl的id
"func" : "xxx()"//要执行位于webControl中的js方法名
}, false)
以上两种API本质上是等价的,注意$js.runjs这个API在Studio0618(V2.5.3)之后的版本才能使用。
更多文档查看【DSL控件指南】-【高级】-【网页控件】
文档更新时间: 2018-01-15 14:55