AngularJS接收外部接口传值的方法
通过ipad的App访问一个由AngularJS写成的web应用。
该应用在调用其他应用时,传递的参数只要通过url传参的方式,就可以在跳转的同时,把参数传递过去。
当然,前提是,Objective-C中已经写好url指定的app了。
下面讨论一下AngularJS在接收由Objective-C给予其的接口时,遇到的问题。
首先是写方法来接收该接口:
window.top.objCInterface = function(result){
// 定义方法apply,使得执行该方法时,
// 先查看对应的scope中是否有已经定义了$apply
// 否则会报错($apply already in progress)
function apply(func){
if (!scope.$$phase) {
// 该scope尚未定义$apply
scope.$apply((func)());
}else{
(func)();
};
}
var scope = angular.element(document.getElementById("**ID**")).scope();
// 由于JS的异步执行,当接收外部接口时
// 不设置延迟有时会出现app崩溃的情况
setTimeout(function(){
apply(
function(){
scope.getResultFromInterface(result);
}
);
}, 100);
之后就可以在对应的scope中写上scope.getResultFromInterface方法然后执行操作了。