gpt4 book ai didi

AngularJS 和 PhoneGap : $location. 路径导致后续 tempateUrl 查找失败

转载 作者:行者123 更新时间:2023-12-04 03:27:48 24 4
gpt4 key购买 nike

我无法使用 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异常(exception)。

我尝试使用新的 angular-sanitize 模块将访问 file://列入白名单,但这没有帮助。

如何制作 $location.path()做与 redirectTo 相同的事情以便加载部分?或者有没有其他方法可以解决这个问题?

更新 :通过在路径函数之后添加对 replace() 的调用,我有点前进了,例如:
$location.path('/login').replace();
但这似乎是一个 hack,它仍然会导致其他路由中的 templateUrl 失败并出现相同的异常。

关于什么可能是错的任何想法?是不是 html5mode(true) 此刻不能与 Phonegap 一起使用,解决此问题的唯一方法是将其设置为 false 并将主题标签添加到每个路径(就像在 Angular phonegap seed project 中所做的那样)?

最佳答案

为了将来引用,这是我设法解决问题的方法:

  • AngularJS 目前似乎不支持 html5mode(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 可以工作,但会破坏使用 History API 和 html5Mode(true) 的网页.最后一 block 拼图是添加 <base href="/"/>到网页的 index.html (并将其排除在 PhoneGap 项目的 index.html 之外。)所以现在即使我有一个链接显示 #/login在网页中,我访问了网址 http://example.com/login并且在地址栏中看不到任何哈希值。

  • **

    所以最后我在我的网页上使用了 History API 在 PhoneGap 项目中禁用了 History API(因为没有地址栏,所以真的不需要 History API)。唯一的缺点是额外的 #/我必须放入每个模板 html 文件,但与在 web 和移动设备上使用所有相同的 html 和 javascript 文件的能力相比,这是一个小麻烦。

    关于AngularJS 和 PhoneGap : $location. 路径导致后续 tempateUrl 查找失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19974097/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com