分析Android的代码CmlWeexActivity.onBackPressed触发的以下调用
CmlWeexActivity.onBackPressed
|-->CmlWeexInstance.onBackPress
|---->CmlEngine.getInstance().callToJs(this, "cml", "onBackPressed", null, null);
但是查询官方文档后并没有给出onBackPressed是如何调用的
于是继续查询Chameleon SDK文档https://cml.js.org/docs/sdk.html#listennative-module-string-method-string-callback-function,查到了listenNative
listenNative(module:String, method:String, callback:Function)
监听客户端调用 js
import bridge from 'chameleon-bridge';
// 监听客户端调用js
export function listenTell() {
bridge.listenNative(
'moduleDemo', // 模块名
'NaTellJS', // 方法名
res => {
// 回调方法中处理返回的数据
}
);
}
修改了下代码,测试成功。但是js只是一个事件通知,具体的逻辑是拦截还是返回需要自己实现。
mounted() {
console.log('App mounted');
bridge.listenNative(
'cml', // 模块名
'onBackPressed', // 方法名
res => {
// 返回上一页
cml.navigateBack(-1);
}
);
}