[英]Why AngularJS routes are not working in local?
我有如下实现 AngularJS 路由的 html 文件,
索引.html:
<!DOCTYPE html>
<html ng-app="demo">
<head>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div ng-view>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js"></script>
<script src="http://code.angularjs.org/1.2.1/angular-route.min.js"></script>
<script>
// Code goes here
var demo = angular.module('demo', ['ngRoute']);
demo.config(function($routeProvider){
$routeProvider.when('/', {
controller: 'testController',
templateUrl: 'test.html'
})
})
var controllers = {};
controllers.testController = function($scope){
$scope.first = "Info";
$scope.customers=[
{name:'jerry',city:'chicago'},
{name:'tom',city:'houston'},
{name:'enslo',city:'taipei'}
];
}
demo.controller(controllers)
</script>
</body>
</html>
测试.html:
<div>
<input type="text" ng-model="name"/>
</br>
{{first}}
</br>
<ul>
<li ng-repeat="cust in customers | filter:name">{{cust.name | uppercase}} - {{cust.city}}</li>
</ul>
</div>
你可以在这里找到工作版本
但是为什么当我在本地浏览器中运行它时它不起作用:(
这是 chrome 控制台错误:
任何帮助表示赞赏! :)
说清楚很重要。 出于安全原因,Chrome(例如)不允许您加载本地文件(即:视图的模板)。 我的建议是设置一个 Web 服务器来测试您的应用程序:
或者,您可以使用内联模板代替外部加载,但这似乎不是一个好习惯。
编辑:
使用您发布的控制台错误打印,Chrome 阻止了您的 ajax 请求。 您可以使用命令行参数绕过此限制:
chrome.exe --allow-file-access-from-files
但是,我鼓励您设置一个简单的本地 Web 服务器,它可以防止您在学习时遇到一些麻烦...
您可以使用 Firefox 进行测试。 路由和 ajax 将起作用。 但是最好设置一个像@gustavodidomenico 所说的网络服务器
使 ng-view 在本地工作的解决方法是将其他 html 的内容放在脚本标记中
<script type="text/ng-template" id="index22.html">
This is index 2 template.
</script>
<script type="text/ng-template" id="index33.html">
This is index 3 template.
</script>
在进行调用的同一 HTML 中。
ngview 进行 AJAX 调用以加载外部 HTML 或单独 HTML 的内容,chrome 不允许对本地资源进行 AJAX 调用,IE 11 还显示“访问被拒绝”错误消息。
当包含在脚本标签中时,不会进行此 AJAX 调用。
有一个名为Web Server for Chrome的Chrome Extension
。 你可以添加它然后午餐它,在浏览对话框中选择你的工作文件夹,然后它给你一个Local URL
,你可以在那里测试你的应用程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.