安卓ios和angularjs相互调用解决首次调用ios传递标题失败的问题
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方法就可以保证标题显示