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&gt ;.
>这使得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文件的网络和手机.

相关文章

AngularJS 是一个JavaScript 框架。它可通过 注:建议把脚本放在 元素的底部。这会提高网页加载速度,因...
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题。出现这个的原因是:由于...
AngularJS 通过被称为指令的新属性来扩展 HTML。AngularJS 指令AngularJS 指令是扩展的 HTML 属性,带有...
AngularJS 使用表达式把数据绑定到 HTML。AngularJS 表达式AngularJS 表达式写在双大括号内:{{ expres...
ng-repeat 指令可以完美的显示表格。在表格中显示数据 {{ x.Name }} {{ x.Country }} 使用 CSS 样式为了...
$http是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。读取 JSON 文件下是存储在web服务器上...