AngularJS使用ng-inlude指令加載頁面失敗的原因與解決方法
本文實例講述了AngularJS使用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,發(fā)現(xiàn)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++可以方便地調(diào)用本機安裝的瀏覽器。像ng-include這樣的指令,必須要有web容器的支持??梢允褂们岸碎_發(fā)神器webstorm,該工具運行html的時候,會自動啟動內(nèi)置的web容器,這樣ng-include指令就不會報錯了。
更多關于AngularJS相關內(nèi)容感興趣的讀者可查看本站專題:《AngularJS入門與進階教程》及《AngularJS MVC架構總結(jié)》
希望本文所述對大家AngularJS程序設計有所幫助。
- AngularJS 使用ng-repeat報錯 [ngRepeat:dupes]
- AngularJS iframe跨域打開內(nèi)容時報錯誤的解決辦法
- AngularJS中update兩次出現(xiàn)$promise屬性無法識別的解決方法
- 模板視圖和AngularJS之間沖突的解決方法
- AngularJS 中使用Swiper制作滾動圖不能滑動的解決方法
- AngularJS實現(xiàn)在ng-Options加上index的解決方法
- AngularJS ng-repeat數(shù)組有重復值的解決方法
- AngularJS在IE下取數(shù)據(jù)總是緩存問題的解決方法
- AngularJS上拉加載問題解決方法
- AngularJS在IE8的不支持的解決方法
- AngularJS報錯$apply already in progress的解決方法分析
相關文章
Angular4實現(xiàn)動態(tài)添加刪除表單輸入框功能
這篇文章主要介紹了Angular4實現(xiàn)動態(tài)添加刪除表單輸入框功能,需要的朋友可以參考下2017-08-08利用Angular.js限制textarea輸入的字數(shù)
相信在大家已經(jīng)學習了足夠多關于AngularJS的知識后,就可以開始創(chuàng)建第一個AngularJS應用程序,這篇文章通過示例給大家介紹如何利用Angular.js限制textarea輸入的字數(shù),有需要的朋友們可以參考借鑒,下面來一起看看吧。2016-10-10AngularJS對動態(tài)增加的DOM實現(xiàn)ng-keyup事件示例
這篇文章主要介紹了AngularJS對動態(tài)增加的DOM實現(xiàn)ng-keyup事件示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03