AngularJS 包含
AngularJS 可以使用 ng-include 指令在 HTML 中包含 HTML 文件
HTML 中包含 HTML 文件
在 HTML 中,目前还不支持包含 HTML 文件的功能
服务端包含
大多服务端脚本都支持包含文件功能 ( SSI : Server Side Includes)
使用 SSI, 我们可在 HTML 中包含 HTML 文件,并发送到客户端浏览器
<?php require("navigation.php");
客户端包含
通过 JavaScript 有很多种方式可以在 HTML 中包含 HTML 文件
通常使用 http 请求 ( AJAX ) 从服务端获取数据
然后返回的数据通过使用 innerHTML 写入到 HTML 元素中
AngularJS 包含
AngularJS 可以使用 ng-include 指令来包含 HTML 内容
<body ng-app=""> <div ng-include="'/static/tiy/html/angularjs/included.html'"></div> <footer>简单教程,简单编程<br/>Copyright © 简单教程 www.twle.cn</footer> </body>
included.html
<h1>简单教程</h1> <p>这是一个被包含的 HTML 页面,使用 ng-include 指令来实现</p>
包含 AngularJS 代码
ng-include 指令除了可以包含 HTML 文件外,还可以包含 AngularJS 代码
site.html
<table> <tr ng-repeat="x in names"> <td>{{ x.Name }}</td> <td>{{ x.Url }}</td> </tr> </table>
包含的文件 "sites.html" 中有 AngularJS 代码,它将被正常执行
<div ng-app="myApp" ng-controller="sitesCtrl"> <div ng-include="'/static/tiy/html/angularjs/site.html'"></div> </div> <footer>简单教程,简单编程<br/>Copyright © 简单教程 www.twle.cn</footer> <script> var app = angular.module('myApp', []); app.controller('sitesCtrl', function($scope, $http) { $http.get("/static/tiy/html/angularjs/site.json").then(function (response) { $scope.names = response.data.sites; }); }); </script>
跨域包含
默认情况下, ng-include 指令不允许包含其它域名的文件
但如果需要包含其它域名的文件,需要设置域名访问白名单
sites.html
<body ng-app="myApp"> <div ng-include="'https://www.twle.cn/static/tiy/html/angularjs/angular_include.html'"></div> <script> var app = angular.module('myApp', []) app.config(function($sceDelegateProvider) { $sceDelegateProvider.resourceUrlWhitelist([ 'https://www.twle.cn/test/**' ]); }); </script>
此外,我们还需要设置服务端允许跨域访问
angular_include.php
<?php // 允许所有域名可以访问 header('Access-Control-Allow-Origin:*'); echo '<b style="color:red">我是跨域的内容</b>';