Dcloud离线打包的过程中,有些情况不可避免的需要原生反向调用H5,一般的方式无法调用到vue的内部js方法,比如test.vue中:
<script>
export default {
methods: {
functionA (a) {
console.warn(a);
}
}
}
functionA 是无法被原生的evaluateJS方法调用到的,因为这个方法被隐藏到了test.vue的内部,那么改怎么解决呢?继续看
第一步,挂载:
mounted(){ //页面初始化方法
Vue.prototype.$functionA = this. functionA
},
methods: { functionA (a) { .... } }
第二步,调用,以iOS为例:
//iOS调用方法
PDRCoreApp *pdrCoreApp = (PDRCoreApp *)[[[PDRCore Instance] appManager] activeApp];
PDRCoreAppFrame* pMainFrame = [pdrCoreApp valueForKey:@"_weexWebview"];
if (pMainFrame)
{
NSString *jsStr = [NSString stringWithFormat:@"Vue.prototype.$functionA ('%@')", ‘123456’];
[pMainFrame stringByEvaluatingJavaScriptFromString:jsStr];
}
搞定!!收工