【问题标题】:AngularJS and Windows 8 route errorAngularJS 和 Windows 8 路由错误
【发布时间】:2013-10-30 21:38:14
【问题描述】:

我正在尝试使用 Visual Studio 2012 在 Windows 8.1 上创建一个带有 angularJS 的 HTML5/JS/CSS3 应用程序。我目前坚持将参数发送到其他视图。

当我在我的 Windows 8 应用程序中执行此操作并单击链接时,我看到几个使用 <a href="#/page/{{:pageId}}">link</a> 的示例时,我收到以下错误。

未安装任何应用程序来打开此类链接(不安全)

当我将{{:pageId}} 代码放在 A 标记之间时,它会显示其 ID。

app.js

var myApp = angular.module('myApp', ['ngRoute', 'ngResource']);

myApp.config(['$routeProvider', function($routeProvider) {
    $routeProvider.when("/", { templateUrl: "views/home.html" })
        .when("/page/:pageId", { templateUrl: "views/page.html" })
        .otherwise({ redirectTo: "/" });
}]);

有什么办法可以解决这个问题?

--更新--

我做了更多的调试。 在浏览器中一切正常。 在视觉工作室中,我发现了以下内容:

<a class="ng-binding" href="unsafe:ms-appx://3595d292-0235-47cd-8db7-cb3019f29114/www/index.html#/page/1" data-ng-href="#/page/1">Select</a>

看起来 VS 正在添加一些代码。在源代码中我没有包含 href 项

我已经更改了链接,一切似乎都很好,并且仅加载了正确的变量 VS 不断在链接的前端添加“不安全:”。

【问题讨论】:

  • {{:pageId}} 绑定将在控制器的$scope 对象上查找名为pageId 的属性。您的控制器中有该属性吗?如果不是,当 Angular 评估 {{:pageId}} 表达式时,它会发现 pageId 未定义,并将您的链接更改为 href="#/page/",您没有为此定义路由...
  • 您浏览器中的网址是什么?是 file:// 还是 http://?
  • 对不起,迟到的评论。因为都是 HTML5 和 JS,所以我在浏览器中对其进行了测试,结果完美。

标签: javascript html angularjs visual-studio-2012


【解决方案1】:

问题解决了!

似乎 ms 添加的 ms-appx 会导致问题。通过添加以下代码可以解决此问题。

AngularJS 1.2

app.config(['$compileProvider', function($compileProvider) {
  $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|file|ms-appx):/);
}]);

对于 1.1.x 和 1.0.x,使用 urlSanitizationWhitelist。

如果你使用PhoneGap,记得添加https以外的文件?否则链接失效。

【讨论】:

  • 哇,太好了,我无法获得良好的调试环境,所以我不知道它还附加了 ms-appx。
  • 太棒了.. 这让我为我们的科尔多瓦项目的 windows 目标创造了一天
猜你喜欢
  • 1970-01-01
  • 2017-07-28
  • 2017-08-24
  • 2023-03-10
  • 1970-01-01
  • 2018-04-10
  • 2015-02-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多