安卓ios和angularjs相互调用解决首次调用ios传递标题失败的问题

时间:2022-06-26 02:32:52

1.angular 调用客户端方法放在 try catch中

try {
js_invoke.showShareDialog(angular.toJson(obj));  // 在这里放客户端的方法即可
} catch(e) {
console.log('Recommend share',obj);
}

2.客户端调用angular的方法,注意方法需全局可以才能正常调用

在首页index.html中声明方法

var goBack = function() { return false };

在具体调用的页面使用

goBack = function() {

return true;

};

这里先说下angular在每一页都调用客服端getWebTitle 方法给客户端返回需要显示标题的方法(getWebTitle为安卓ios自己定义的方法)

定义方法

function initPageTitle(title) {
var records = {
name: title
};
try { js_invoke.getWebTitle(JSON.stringify(records)); } catch(e) {}
} $scope.$on('$ionicView.enter', function() { //进入页面及调用这个是ionic的方法 initPageTitle("首页"); //在进入页面前调用即可 });

在安卓端这样调用是没有问题的,在Ios中除首次进入其他时候调用也没有问题

这里需要注意在首次时 由于页面还没加载完方法已经执行所以ios返回的标题直接为空,解决该问题需要ios在页面加载完成后主动调用angualrjs的方法获取到标题

首页增加 var iosPageTitle = function() { };

在首页的controller 中写iosPageTitle = function() { initPageTitle("首页"); };

这样ios加载完成后主动调用angular方法就可以保证标题显示