AngularJS和PhoneGap:$location.path导致后续tempateUrl查找失
我无法找到路径查找工作与AngularJS v1.2.0和PhoneGap / Cordova
Android应用程序.通过设置< base href =“.”/>我已经远离html5mode(true)在index.html中,然后将$routeProvider.when(‘/’)更改为$routeProvider.when(‘/ android_asset / www / index.html’).之后,我可以获得redirectTo(‘login’)到达$routeProvider.when(‘/ login’),并且像预期的那样渲染templateUrl:’static / partials / login.html’.
我遇到的问题是,如果我尝试通过$location.path(‘/ login’),我的Javascript代码重定向到登录页面;找到该路由,但是templateUrl加载失败,并且出现一个insecurl异常. 我尝试通过使用新的angular-sanitize模块对file://进行白名单访问,但这没有帮助. 如何使$location.path()执行与redirectTo相同的事情,以便部分被加载?还是有其他方法来解决这个问题? 更新:通过在路径函数之后添加一个replace()的调用,我有点向前,例如: $location.path( ‘/登录’)代替(); 但是这似乎是一个黑客,它仍然导致另外路由中的templateUrl失败并出现相同的异常. 有什么想法可能是错的?是这样的html5mode(true)只是在这个时候与Phonegap不起作用,唯一的方法来解决这个问题是将其设置为false,并向每个路径添加主题标签(就像在角度的phonegap seed project中完成的)?
为了将来参考,这是我如何设法解决问题:
> AngularJS目前似乎并不支持hvd5mode(true)在Cordova应用程序内,因为我所报告的insecurl问题.我要做的是添加 var h5m = (typeof html5Mode !== 'undefined') ? html5Mode : true; $locationProvider.html5Mode(h5m); 这使我有可能在PhoneGap index.html中使用全局变量显式设置html5Mode: <script> var html5Mode = false; </script> >所以现在$location.path(‘/ login’)以及redirectTo:’login’的作品,但链接在html文件中,不要.为了让那些在PhoneGap上工作的人,html5Mode被禁用,我不得不在每个链接之前添加# < a href =“#/ login”> login< / a> ;. ** 所以最后我有History API在我的网页上工作,而且在PhoneGap项目中禁用了History API(其中真正不需要History API,因为没有地址栏).唯一的缺点是额外的#/我必须放在每个模板html文件,但这是一个小的烦恼相比,能够使用所有相同的HTML和JavaScript文件的网络和手机. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |