安卓如何调用vue中methods的方法??????

我在vue中的methods写了一个方法,在mounted中暴露出去给安卓调用 ,如下:

methods:{

outGoodsResult(val){
    alert('ceshi')
    alert(val)
}

}

mounted(){

window.outGoodsResult = self.outGoodsResult

}
他说调用到了,但是我这边alert没有弹出数据,还是说他那边没有调用到??? 之前是可以的 他说那边没有改动代码,但我这边也没有啊,请问还有别的方法可以让安卓调用vue里的方法吗??这种写法我也试了 如下
window['outGoodsResult '] = function(val){

alert('ceshi')
alert(val)

}
这样写也不行,请问是什么原因呢????

阅读 7.1k
4 个回答

原生中有没有加上这个,没加的话JS中的alert框不会弹出的

// WebChromeClient类:辅助WebView处理JavaScript的对话框,网站图标,网站标题等
mWebView.setWebChromeClient(new WebChromeClient());

你们是混合开发吗,不是都要通过jsbridge才能桥接吗,我这边也是刚接触混合开发,我们用的是:dsbridge,还不错,你可以试试

1.JS代码

<script type="text/javascript">
    //<![CDATA[

    window.onload = function() {
        var MyComponent = Vue.extend({
            methods: {
                vfunc: function() {
                    alert();
                }
            },
            created() {
                window.vue = this
            }
        });

        var vm = new Vue({
            el: '#app',
            components: {
                'my-component': MyComponent
            }
        });
        window.vm = vm;

    } //]]>

    function callVueJsMethod() {
        window.vue.vfunc();
        //window.vm.$refs.foo.vfunc();
    }
</script>

2.Java代码

  • 允许alert等对话框弹出:
WebView.setWebViewClient(new WebViewClient());
WebView.setWebChromeClient(new WebChromeClient());
  • 调用JS方法:
WebView.loadUrl("javascript: callVueJsMethod()");

or

WebView.evaluateJavascript("javascript: callVueJsMethod()", null);

p.s.JSBridge又另外一个问题了,传送门:

  1. github:lzyzsd/JsBridge(Android)
  2. github:marcuswestin/WebViewJavascriptBridge(iOS)

可能是你们安卓的webview不支持alert。。
让他看一下或者你这边调其他方法来测试函数是否被调用

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
1 篇内容引用
推荐问题
宣传栏