我正在尝试在带有Visual Studio 2012的Windows 8.1上使用angularJS创建HTML5 / JS / CSS3应用程序。我目前无法将参数发送到其他视图。
谷歌搜索时,我看到几个示例,<a href="#/page/{{:pageId}}">link</a>当我在Windows 8应用程序中执行此操作并单击链接时,出现以下错误。
<a href="#/page/{{:pageId}}">link</a>
未安装任何应用程序以打开此类链接(不安全)
当我将{{:pageId}}代码放在A标签之间时,它会显示其ID。
{{:pageId}}
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: "/" }); }]);
有什么解决方案可以解决这个问题?
-更新-
我已经做了一些调试。在浏览器中,一切正常。在Visual Studio中,我发现了以下内容:
<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不断在链接的开头添加’unsafe:’时,才加载正确的变量。
问题解决了!
似乎由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?以外的文件,否则,链接将不起作用。