AngularJS使用ng-inlude指令加載頁面失敗的原因與解決方法
本文實(shí)例講述了AngularJS使用ng-inlude指令加載頁面失敗的原因與解決方法。分享給大家供大家參考,具體如下:
AngularJS中提供的ng-include指令,很類似于JSP中的<jsp:include>用來將多個(gè)子頁面合并到同一個(gè)父頁面中,避免父頁面過大,可讀性差,不好維護(hù)。
父頁面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運(yùn)行parent.html,發(fā)現(xiàn)child.html頁面不能包含到parent.html中。IE下報(bào)錯(cuò)信息如下:
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下報(bào)錯(cuò)信息如下:
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提示很明顯:不能跨域訪問。通過上面的錯(cuò)誤提示,可以看到:使用ng-include指令的時(shí)候,會(huì)用到AJAX請(qǐng)求XMLHttpRequest。但是我們是直接用瀏覽器打開的parent.html,并沒有通過web容器訪問,所以存在跨域訪問問題,加載child.html也就失敗了。解決辦法很簡單:將代碼部署到tomcat等web容器下,通過http訪問即可。
平時(shí)在練習(xí)JavaScript或者是JS框架的時(shí)候,一版都是使用比較輕量級(jí)的工具,不會(huì)使用像Eclipse之類IDE,我一般使用Notepad++編寫js代碼。Notepad++可以方便地調(diào)用本機(jī)安裝的瀏覽器。像ng-include這樣的指令,必須要有web容器的支持??梢允褂们岸碎_發(fā)神器webstorm,該工具運(yùn)行html的時(shí)候,會(huì)自動(dòng)啟動(dòng)內(nèi)置的web容器,這樣ng-include指令就不會(huì)報(bào)錯(cuò)了。
更多關(guān)于AngularJS相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《AngularJS入門與進(jìn)階教程》及《AngularJS MVC架構(gòu)總結(jié)》
希望本文所述對(duì)大家AngularJS程序設(shè)計(jì)有所幫助。
- AngularJS 使用ng-repeat報(bào)錯(cuò) [ngRepeat:dupes]
- AngularJS iframe跨域打開內(nèi)容時(shí)報(bào)錯(cuò)誤的解決辦法
- AngularJS中update兩次出現(xiàn)$promise屬性無法識(shí)別的解決方法
- 模板視圖和AngularJS之間沖突的解決方法
- AngularJS 中使用Swiper制作滾動(dòng)圖不能滑動(dòng)的解決方法
- AngularJS實(shí)現(xiàn)在ng-Options加上index的解決方法
- AngularJS ng-repeat數(shù)組有重復(fù)值的解決方法
- AngularJS在IE下取數(shù)據(jù)總是緩存問題的解決方法
- AngularJS上拉加載問題解決方法
- AngularJS在IE8的不支持的解決方法
- AngularJS報(bào)錯(cuò)$apply already in progress的解決方法分析
相關(guān)文章
AngularJS的依賴注入實(shí)例分析(使用module和injector)
這篇文章主要介紹了AngularJS的依賴注入,結(jié)合實(shí)例形式分析了依賴注入的原理及使用module和injector實(shí)現(xiàn)依賴注入的步驟與操作技巧,需要的朋友可以參考下2017-01-01
在AngularJs中設(shè)置請(qǐng)求頭信息(headers)的方法及不同方法的比較
在AngularJs中有三種方式可以設(shè)置請(qǐng)求頭信息,文中對(duì)每種方法給大家介紹的非常詳細(xì),選擇那種方式可以根據(jù)自己的需求,感興趣的朋友跟隨腳本之家小編一起看看吧2018-09-09
詳解Angular 4.x 動(dòng)態(tài)創(chuàng)建組件
本篇文章主要介紹了詳解Angular 4.x 動(dòng)態(tài)創(chuàng)建組件,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04
AngularJS 將再發(fā)布一個(gè)重要版本 然后進(jìn)入長期支持階段
目前團(tuán)隊(duì)正在開發(fā) AngularJS 1.7.0,而 1.7 的開發(fā)周期將一直持續(xù)到 2018 年 6 月 30 日2018-01-01
angular實(shí)現(xiàn)圖片懶加載實(shí)例代碼
本篇文章主要介紹了angular實(shí)現(xiàn)圖片懶加載實(shí)例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06
angularjs 動(dòng)態(tài)從后臺(tái)獲取下拉框的值方法
今天小編就為大家分享一篇angularjs 動(dòng)態(tài)從后臺(tái)獲取下拉框的值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-08-08
Angular實(shí)現(xiàn)的自定義模糊查詢、排序及三角箭頭標(biāo)注功能示例
這篇文章主要介紹了Angular實(shí)現(xiàn)的自定義模糊查詢、排序及三角箭頭標(biāo)注功能,涉及AngularJS針對(duì)頁面table元素的遍歷、查詢、判斷、排序等相關(guān)操作技巧,需要的朋友可以參考下2017-12-12

