我想通过渲染站点的android webview从我的sapui5控制器之一调用方法(并传递参数)。我一直在使用:
webview.loadUrl("javascript:myJavaScriptFunc('" + argumentPassingIn + "')");
之前,但是这里的问题是我的方法必须像这样在HTML中:
<body>
<h1>Body</h1>
<script>
myJavaScriptFunc(val){
//Do something with val
}
</script>
</body>
就我而言,我想从我的SAPUI5 Web应用程序的特定控制器中调用它。如何定位控制器和特定方法?有人面临这样的奇迹吗?
答案 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 + "' })");