(十) ng-inlude指令加载页面失败的原因和解决方法

angularjs中提供的ng-include指令,很类似于JSP中的<jsp:include>用来将多个子页面合并到同一个父页面中,避免父页面过大,可读性差,不好维护。

父页面parent.html代码如下:

<html>
  <head>
    <script src="angular-1.2.2/angular.js"></script>
	<script>
	 function rootController($scope,$rootScope,$injector)
	 {
		$rootScope.name = "aty";
		$rootScope.age = 25;
	 }
	</script>
  </head>
  <body  ng-app ng-controller="rootController">
        <h1>Hello, {{name}}!</h1>
        <h1>Hello, {{age}}!</h1>

	<div id="included" ng-include="'child.html'">
            <input type="button" value="2"/>
        </div>
  </body>
</html>

被包含的子页面child.html代码如下:

 <div>
        <h1>included, {{name}}!</h1>
        <h1>included, {{age}}!</h1>
 </div>

我用IE11和Chrome39运行parent.html,发现child.html页面不能包含到parent.html中。IE下报错信息如下:

Error: 拒绝访问。
   at Anonymous function (file:///D:/learn/angular-1.2.2/angular.js:7852:7)
   at sendReq (file:///D:/learn/angular-1.2.2/angular.js:7720:9)
   at serverRequest (file:///D:/learn/angular-1.2.2/angular.js:7454:9)

chrome下报错信息如下:

XMLHttpRequest cannot load file:///D:/learn/include.html.
Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.
Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'file:///D:/learn/include.html'.

IE下的提示有些晦涩,不过chrome提示很明显:不能跨域访问。通过上面的错误提示,可以看到:使用ng-include指令的时候,会用到AJAX请求XMLHttpRequest。但是我们是直接用浏览器打开的parent.html,并没有通过web容器访问,所以存在跨域访问问题,加载child.html也就失败了。解决办法很简单:将代码部署到tomcat等web容器下,通过http访问即可。

平时在练习javascript或者是JS框架的时候,一版都是使用比较轻量级的工具,不会使用像Eclipse之类IDE,我一般使用Notepad++编写js代码。Notepad++可以方便地调用本机安装的浏览器。像ng-include这样的指令,必须要有web容器的支持。可以使用前端开发神器webstorm,该工具运行html的时候,会自动启动内置的web容器,这样ng-include指令就不会报错了。

时间: 2024-12-22 04:05:30

(十) ng-inlude指令加载页面失败的原因和解决方法的相关文章

PHP 开启了扩展却还是无法加载oci8 扩展的原因和解决方法

开启了PHP 的oci8 扩展,但是打印 var_dump ( get_loaded_extensions() )还是没有出现oci8 ,pdo_oci,pdo_odbc扩展. 之后去oracle官网下载 ,解压缩,之后修改系统的环境变量,还是无法使用. 最后的解决方法,安装  OracleDatabaseInstantClient11g11.2.0.3.0 x64 ,安装之后就可以正常. OracleDatabaseInstantClient11g11.2.0.3.0 x64 是CSDN某为大

数据库连接失败的原因及解决方法

各种业务系统在使用过程中都会遇到一些问题,因数据库连接失败,不能登录管理软件就是其中之一,这个很令人头疼而且常见的问题 一般的业务系统均采用的是SQL数据库,我们这里总结了SQL数据库连接失败的原因和解决方法: 原因一:登录账号.密码.服务器名称.数据库名称登录错误导致不能连接,这个比较常见,仔细检查好所填信息是否正确,填写正确一般就可以解决. 解决方法:当正在使用的软件出现数据库不能连接时,一般就是服务器名出现问题,更改服务器名称一般可以解决问题.数据库如果是安装在本机,服务器名可以用".&q

php ci框架中加载css和js文件失败的原因及解决方法

在将html页面整合到ci框架里面的时候,加载css和js失败.原因是ci框架是入口的框架 对框架中文件的所有请求都需要经过index.php处理完成,当加载外部的css和js文件的时候要使 用base_url()函数处理外部的链接. 在控制器中需要先载入url相关的类 public function test() { $this->load->helper('url'); $this->load->view('admin/test'); } 在test.php的view视图中.

Android 4.X 系统加载 so 失败的原因分析

1 so 加载过程 so 加载的过程可以参考小米的系统工程师的文章loadLibrary动态库加载过程分析 2 问题分析 2.1 问题 年前项目里新加了一个 so库,但发现native 方法的找不到的 crash 好多,好些都是报了java.lang.unsatisfiedlinkerror native method not found,而且基本上是出现在4.x的系统里,特别是 4.4,4.2的系统.在网络上搜索相关的可能导致到这个问题的原因: so 文件没有在对应架构的目录里找到: 方法名有

对于android WebView加载不出Html5网页的解决方法

之前碰到一个问题,就是用webview去加载一个H5的页面,但是发现加载出现一片空白,但是我把我的链接放到浏览器里却又是可以的,找了会,被我老大叫过去搞别的了,然后被我老大找出来了,就是因为对某些标签的不支持,加上: settings.setDomStorageEnabled(true); 然后网页就显示出来了.

C#调用dll提示&quot;试图加载格式不正确的程序&quot;解决方法

程序在32位操作系统上运行正常,在64位操作系统上运行读卡功能提示”试图加载格式不正确“. -------------------------------------------------------------------------------------------- 点击项目属性,把目标平台Any CPU 设置为X86

【Android开发经验】使用WebView加载本地图片出现闪屏的解决方法

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 问题描述 运行环境 解决方案 问题描述 使用WebView加载本地图片的时候,也就是一段HTML代码嵌入本地的图片地址的形式,会出现短暂的灰色的闪烁,然后就可以正常显示图片了,WebView的背景颜色在xml中设置为黑色. 同时,出现这个问题的时候,Log会打印报错信息:nativeOnDraw failed; clearing to background color. 运行环境 nexus5 Andro

php ci框架中载入css和js文件失败的原因及解决方法

在将html页面整合到ci框架里面的时候,载入css和js失败. 原因是ci框架是入口的框架 对框架中文件的全部请求都须要经过index.php处理完毕,当载入外部的css和js文件的时候要使 用base_url()函数处理外部的链接. 在控制器中须要先加载url相关的类 public function test() { $this->load->helper('url'); $this->load->view('admin/test'); } 在test.php的view视图中.

IIS部署时未能加载程序集&quot;System.Web.Http.WebHost&quot;解决方法

问题如下 服务器没有安装MVC,下载以下dll覆盖到bin目录下,即可免安装运行程序. 下载地址:https://pan.baidu.com/s/1mhCo5mS