当前位置: 首页 > 面试题库 >

AngularJS和PhoneGap:$ location.path导致随后的tempateUrl查找失败

景承教
2023-03-14
问题内容

我在使用AngularJS v1.2.0和PhoneGap / Cordova
Android应用程序进行路径查找时遇到麻烦。html5mode(true)通过设置<base href="."/>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('/login').replace();

但这似乎是一种黑客行为,并且仍然会导致该路径中的templateUrl失败,并出现相同的异常。

有什么想法可能有问题吗?难道html5mode(true)暂时无法在Phonegap上正常工作,并且解决此问题的唯一方法是将其设置为false并向每个路径添加井号(就像在有角度的phonegap
种子项目中一样)?


问题答案:

供以后参考,这是我设法解决该问题的方法:

  1. html5mode(true)由于insecurl我报告的问题,AngularJS当前似乎在Cordova应用程序中不支持。我要做的就是添加
    var h5m = (typeof html5Mode !== 'undefined') ? html5Mode : true;
    

    $locationProvider.html5Mode(h5m);

这使我可以index.html使用全局变量在PhoneGap中显式设置html5Mode :

    <script>
  var html5Mode = false;
</script>
  1. 因此,现在$location.path('/login')以及它都redirectTo: 'login'可以,但是html文件中的链接没有。为了使那些在html5Mode被禁用的情况下在PhoneGap中工作的人,我必须#/在每个链接(例如)之前添加<a href="#/login">login</a>

  2. 这样可以使PhoneGap正常工作,但会破坏将History API与结合使用的网页html5Mode(true)。最后一个难题是将其添加<base href="/"/>到网页的index.html中(并将其排除在PhoneGap项目的index.html中。)因此,即使我#/login在网页中有一个链接,也可以进入网址,http://example.com/login并且在地址栏中看不到任何哈希值。

**

所以,最后我有历史API的工作在我的网页
历史API中的PhoneGap项目(那里实在没有必要对历史API,因为没有地址栏)禁用。唯一的缺点是#/我必须在每个模板html文件中添加额外的内容,但是与将所有相同的html和javascript文件同时用于网络和移动设备的功能相比,这是一个小麻烦。



 类似资料:
  • 我们在堆大小为512M的IBM J9 VM上运行weblogic服务器。 今天,服务器因OutOfMemory错误而失败。 我使用Eclipse Memory Analyzer打开了堆转储文件xxx.phd(安装了IBM DTFJ pluign以支持。phd文件)。 垫子给我一份泄漏嫌疑人报告,像这样: 我如何找到创建这个大数组的类? 或者任何帮助我识别大数组的提示?

  • 我尝试将Codeigniter与AngularJS路由一起使用,它正在工作,但我需要不使用散列。我使用以下代码: 但当我刷新页面时,跳转到404。

  • 问题内容: 在清理这个答案时,我对MySQL和s和存储过程有了一些了解,但感到震惊的是,尽管and 触发器可以修改数据,但它们似乎不会导致插入/更新失败(即验证)。在这种特殊情况下,我可以通过处理数据以导致主键重复的方式来使其工作,这在这种特殊情况下是有道理的,但在一般意义上不一定有意义。 这种功能在MySQL中可行吗?在其他RDBMS中(可悲的是,我的经验仅限于MySQL)?也许是样式语法? 问

  • 问题内容: 我需要检查异常是否由某些数据库问题引起。我收到异常,并检查其原因是否包含“ ORA”字符串,然后将其返回(类似于“ ORA-00001”)。这里的问题是我收到的异常嵌套在其他异常中,因此,如果我不知道它是否是oracle异常,则必须检查该异常的原因,以此类推。有没有更清洁的方法可以做到这一点?有没有办法知道给定异常的第一个原因(嵌套的异常)? 我当前的代码如下所示: 问题答案: 只需遍

  • 问题内容: 我正在尝试查找某个列是否需要其功能。 我如何找出表中的此列是否包含在实际数据之前或之后具有空格的记录。 问题答案: 您可以使用函数本身(不是最有效但最准确的)来检查它: 尽管如果要检查然后转身进行修剪,则可能首先需要这样做,如下所示:

  • 问题内容: 我在使用表单时遇到一些基本麻烦。这就是我所做的。 我从这里获取了这个很酷的指令:https : //github.com/TheSharpieOne/angular-input- match 看起来像这样: 本质上,此指令监视其附加到模型值的元素,并将其与match属性中的模型值进行比较。 所以…例如,下面我们正在看两个密码是否匹配: 该指令似乎有效,因为它可以适当地设置ng-vali