Webview将值传递给SAPUI5控制器

时间:2018-08-21 13:29:14

标签: java android webview sapui5

我想通过渲染站点的android webview从我的sapui5控制器之一调用方法(并传递参数)。我一直在使用:

webview.loadUrl("javascript:myJavaScriptFunc('" + argumentPassingIn + "')"); 

之前,但是这里的问题是我的方法必须像这样在HTML中:

<body>
  <h1>Body</h1>
  <script>
    myJavaScriptFunc(val){
      //Do something with val
    }
  </script>
</body>

就我而言,我想从我的SAPUI5 Web应用程序的特定控制器中调用它。如何定位控制器和特定方法?有人面临这样的奇迹吗?

1 个答案:

答案 0 :(得分:1)

控制器的所有方法都不在全局范围内(即window)。因此,我将使用event bus

比方说,您的控制器已定义方法myTestFunction。在控制器的onInit中进行

var oEventBus = sap.ui.getCore().getEventBus();
oEventBus.subscribe("AndroidWebView", "AndroidWebEvent", this.myTestFunction, this);

然后您可以在android webview中调用以下代码

webview.loadUrl("javascript:sap.ui.getCore().getEventBus().publish('AndroidWebView', 'AndroidWebEvent', { arg: '" + argumentPassingIn + "' })");