我遇到的问题是,如果我尝试通过$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> ;.
>这使得PhoneGap工作,但打破了使用html5Mode(true)的历史API的网页.拼图的最后一块是添加< base href =“/”/>到网页的index.html(并将其从PhoneGap项目的index.html中删除).所以现在即使我有一个链接,说在网页上#/ login,我得到url http:// example.com/login,并且在地址栏中看不到任何哈希值.
**
所以最后我有History API在我的网页上工作,而且在PhoneGap项目中禁用了History API(其中真正不需要History API,因为没有地址栏).唯一的缺点是额外的#/我必须放在每个模板html文件,但这是一个小的烦恼相比,能够使用所有相同的HTML和JavaScript文件的网络和手机.