我正在运行一个仅包含一个文件的 AngularJS 应用程序
<div ng-include src="'sample.html'"></div>
在 Web 服务器下运行时有效。但是,如果 Web 应用程序仅通过从文件资源管理器中双击(即不是从 Web 服务器)运行,则它不包含该文件
ng-include 是否在 Web 服务器之外工作?我检查了 Chrome 上的网络状态,它显示方法上的选项,状态上的加载已取消
我正在运行一个仅包含一个文件的 AngularJS 应用程序
<div ng-include src="'sample.html'"></div>
在 Web 服务器下运行时有效。但是,如果 Web 应用程序仅通过从文件资源管理器中双击(即不是从 Web 服务器)运行,则它不包含该文件
ng-include 是否在 Web 服务器之外工作?我检查了 Chrome 上的网络状态,它显示方法上的选项,状态上的加载已取消
一种解决方法是内联您的模板:
<script type="text/ng-template" id="sample.html">
<div>This is my sample template</div>
</script>
小提琴。
这会将您的模板放入 Angular 的模板缓存中。当处理 ng-include 指令时,Angular 首先检查缓存。
问题是由于file://
协议。当文件从file://
. 这就是 AJAX 请求失败的原因。并ng-include
使用它们下载文件。
您可以使用参数启动 Chrome--allow-file-access-from-files
以禁用对file://
.
如果文件在同一个文件夹中,FireFox 应该加载文件(查看此以获取更多信息)。
但个人更喜欢启动最简单的 NodeJS 脚本来提供文件,这可以在angular-seed项目中找到。它只需要node
二进制文件,给人一种普通网络服务器的感觉。
我有一个类似的问题,我通过运行一个简单的 nodejs 服务器来提供静态文件 - http-server来解决它。确保您已安装nodejs,然后:
安装:
$ sudo npm install http-server -g
然后从您的项目目录中:
$ http-server
现在您可以从以下位置访问您的文件:
localhost:8080/whatever-file-you-have-in-your-directory.html
你可以使用 Grunt 和grunt-html 插件来预编译你的模板和你的 Angular 代码。
在您的 xampp 上使用虚拟主机是最好的解决方案,并提供自定义名称,例如 yourProject.dev
更新httpd-vhosts文件C:\xampp\apache\conf\extra\httpd-vhosts
<VirtualHost *:80>
ServerName yourProject.dev
ServerAlias www.yourProject.dev yourProject.com www.yourProject.com
DocumentRoot "C:\Users\customFolder/yourProject"
<Directory "C:\Users\customFolder/yourProject">
DirectoryIndex index.html index.php
ServerSignature Off
Options Indexes FollowSymLinks IncludesNoExec
AllowOverride All
Allow from all
Require all granted
</Directory>
</VirtualHost>
然后将您的主机文件更新为127.0.0.1 yourProject.dev
在 Windows 中:c:\Windows\System32\Drivers\etc\hosts
在 Mac 中:/private/etc/hosts
别忘了让你的 xampp/wampp 休息一下