对于任何人通过示例。我今天意识到Angular是邪恶的。他们说这是很好的可测试的JavaScript与依赖注入,但它似乎并没有太多兴趣告诉你什么是错误是当你有一个,它只是失败。伟大而高贵的编程思想,但没有错误信息,它不是很好。
总之修复是角是非常严格的JSON代码,以便在services.js线为Bings地图服务方法getAddressFromPosition
它使用获得()的工作,但是这可能是一个旧版本演示写入时的Angular。我试过使用1.2,但Ripple模拟器不喜欢引用特定于浏览器的代码。所以我用了最新的1.3.13我相信。
这是访问Bing位置服务的位置,Cordova地理位置坐标返回Json,但Angular希望它们包装在JSONP中。搜索越来越分散的网络它出现错误可能是CORS否,所以许多不同的人在控制器,模块,服务中使用JSONP调用,有些使用$ http others资源。最后,我使用JSONP来处理$资源,并将其插入到$ promise中来自控制器的调用需求中。我使用了一个静态的Url和坐标我知道工作,所以你将不得不使用:param角度符号把它们放回去。希望它可以帮助某人。
所以更改为:
getAddressFromPosition: function (position) {
var resource = $resource(url, {}, {
jsonp_query: {
method: 'JSONP'
}
});
return resource.jsonp_query().$promise.then(function (response) {
return response.resourceSets[0].resources[0].address.formattedAddress;
}, function (error) {
return position.coords.latitude + "," + position.coords.longitude
});
编辑:
我把上面的和它的工作。然而,问题出于某种原因,也许是通过调试,另一个应用程序实例被部署在另一个端口上。然后,将应用程序更改为在此新端口上运行。最初的端口是4400.问题是,$ http或$ resource角度必须通过这个模拟器,而且仿真器将这看作是跨域,除非它被配置到应用程序运行的相同端口。
所以网址: 在右侧设置事业部下拉http://localhost:4409/index.html?enableripple=cordova-3.0.0-iPhone5
然后,代理端口也必须设置为4409,否则浏览器会抱怨$ HTTP请求跨域,前模拟器实际上执行它来查询Azure移动服务或Bing地图。
所以这非常令人沮丧。然而,VS Cordova已经明确减少了您为配置混合移动应用程序而必须配置的位数,但仍然存在一些小故障,可能会让您感觉不适。我认为它是有角度的东西,因为没有错误消息,但在开发工具控制台中的Chrome中是错误的地方,并且经过一些谷歌搜索后,显然它是运行在不同端口上的纹波模拟器由于Access-Control-Allow没有被设置,代理不允许该呼叫被转发。