目录

1. WebControl内的HTML如何调用原生公共服务

很多情况下我们需要在原生的页面中嵌入H5来实现我们的页面展示,这也是我们解决一些问题的技巧,比如:集成复杂图表时、某种协议展示时、展示PDF和Word文档时以及其它类似HTML的页面或用HTML页面实现更简单时等等。

1.1. WebControl内的HTML如何调用原生公共服务

HTML需引用以下JS

  1. <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引用

  1. <script language="JavaScript" src="../Frameworks/iuapmobile.native.all.js" ></script>

注意引用路径是否正确,可到native目录找到文件用浏览器打开,查看引用路径是否正确
路径和WebControl中的html目录层级有关,请注意

2.2. 访问原生控件的API

同JSCOntroller访问原生控件的API保持一致,如下:

  1. $id("xxx").get(attr)
  2. $id("xxx").set(attr, value)

需要指出的是:

  • 要想通过$id来获取原生控件,需要JSController的onload事件之后才能访问
  • 因此绝大多数场景应是在JSController的onload事件方法通过$js.runjs方法调用HTML中的js方法,在HTML的js方法中再访问$id来获取原生控件的数据。

3. 原生JSController如何调用WebControl内的HTML的JS方法

有两种调用方法:

  1. $js.runjs({
  2. "controlid" : "webcontrol0",//webControl的id
  3. "func" : "xxx()"//要执行位于webControl中的js方法名
  4. })

或者

  1. $service.call("UMJS.runjs", {
  2. "controlid" : "webcontrol0",//webControl的id
  3. "func" : "xxx()"//要执行位于webControl中的js方法名
  4. }, false)

以上两种API本质上是等价的,注意$js.runjs这个API在Studio0618(V2.5.3)之后的版本才能使用。

更多文档查看【DSL控件指南】-【高级】-【网页控件】

文档更新时间: 2018-01-15 14:55