AngularJS 中的 ng-include:如何包含 HTML 文件 [示例]

默认情况下,HTML 不提供从其他文件包含客户端代码的功能。在任何编程语言中,将功能分布到任何应用程序的各个文件中通常是一种很好的做法。

例如,如果您有数字运算逻辑,您通常希望在一个单独的文件中定义该功能。然后只需包含该文件,即可在多个应用程序中重复使用该文件。

这通常是 Include 语句 可用于.Net 等编程语言和 Java.

本教程介绍将文件(包含外部 HTML 代码的文件)包含在主 HTML 文件中的其他方法。

客户端包括

最常见的方法之一是通过 Javascript. JavaScript 是一种编程语言,可用于动态操作 HTML 页面中的内容。因此, Javascript 也可以用于包含来自其他文件的代码。

以下步骤显示了如何实现这一点。

步骤 1) 定义一个名为Sub.html的文件,并在文件中添加以下代码。

<div>
	This is an included file
</div>

步骤2) 创建一个名为 Sample.html 的文件,它是您的主应用程序文件,并添加以下代码片段。

以下是关于以下代码需要注意的主要方面,

  1. 在 body 标签中,有一个 div 标签,其 id 为 Content。这是将插入外部文件“Sub.html”的代码的位置。
  2. 这里有一个对 jQuery 脚本的引用。JQuery 是一种基于 Javascript 这使得 DOM 操作变得更加容易。
  3. 在 Javascript 函数中,有一条语句 '$(“#Content”).load(“Sub.html”);',该语句导致文件 Sub.html 中的代码被注入到 id 为 Content 的 div 标签中。
    <html> 
    	  <head> 
    	    <script src="jquery.js"></script> 
    	    <script> 
    	    $(function(){
    	      $("#Content").load("Sub.html"); 
    	    });
        </script> 
      </head> 
    
    <body> 
         <div id="Content"></div>
      </body> 
    </html>

服务器端包括

服务器端包含也可用于包含整个站点的通用代码片段。这通常用于包含 HTML 文档以下部分中的内容。

  1. 页眉
  2. 页脚
  3. 导航菜单。

为了使 Web 服务器能够识别“服务器端包含”,文件名必须具有特殊扩展名。Web 服务器通常接受这些扩展名,例如 .shtml、.stm、.shtm、.cgi。

用于包含内容的指令是“include 指令”。include 指令的示例如下所示;

<!--#include virtual="navigation.cgi" -->
  • 上述指令允许将一个文档的内容包含在另一个文档中。
  • 上面代码中的“虚拟”命令用于指定相对于应用程序域根目录的目标。
  • 此外,除了虚拟参数之外,还有文件参数可以使用。当需要指定相对于当前文件目录的路径时,使用“文件”参数。

请注意:

virtual 参数用于指定需要包含的文件(HTML 页面、文本文件、脚本等)。如果 Web 服务器进程无权读取文件或执行脚本,则 include 命令将失败。'virtual' 一词是必须放在 include 指令中的关键字。

如何在 AngularJS 中包含 HTML 文件

Angular 提供了使用 ng-include 指令来包含来自其他 AngularJS 文件的功能。

“ng-include 指令”的主要目的是在主 AngularJS 应用程序中获取、编译和包含外部 HTML 片段。

让我们看看下面的代码库并解释如何使用 Angular 实现这一点。

步骤1) 让我们在名为 Table.html 的文件中编写以下代码。该文件将使用 ng-include 指令注入到我们的主要应用程序文件中。

下面的代码片段假设有一个名为“tutorial”的作用域变量。然后它使用 ng-repeat 指令,该指令遍历“Tutorial”变量中的每个主题并显示“name”和“description”键值对的值。

<table>
    <tr ng-repeat="Topic in tutorial">
        <td>{{ Topic.Name }}</td>
        <td>{{ Topic.Country }}</td>
    </tr>
</table>

步骤2) 让我们在名为 Main.html 的文件中编写以下代码。这是一个简单的 angular.JS 应用程序,具有以下方面

  1. 使用“ng-include 指令”将代码注入外部文件“Table.html”。该语句已在下面的代码中以粗体突出显示。因此 div 标签 ' 将被“Table.html”文件中的整个代码替换。
  2. 在控制器中,创建了一个“tutorial”变量作为 $scope 对象的一部分。此变量包含一个键值对列表。

在我们的示例中,键值对是

  1. 名称——表示主题的名称,例如控制器、模型和指令。
  2. Description – 给出每个主题的描述

教程变量也可以在“Table.html”文件中访问。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Event Registration</title>
        <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
</head>
<body ng-app="sampleApp">
<div ng-controller="AngularController">
    <h3> Guru99 Global Event</h3>
		<div ng-include="'Table.html'"></div>
</div>
<script>

    var sampleApp = angular.module('sampleApp',[]);
    sampleApp.controller('AngularController', function($scope) {
        $scope.tutorial =[
            {Name: "Controllers" , Description : "Controllers in action"},
            {Name: "Models" , Description : "Models and binding data"},
            {Name: "Directives" , Description : "Flexibility of Directives"}
        ];

    });
</script>
</body>
</html>

当您执行上述代码时,您将得到以下输出。

输出:

在 AngularJS 中包含 HTML 文件

总结

  • 默认情况下,我们知道 HTML 不提供直接的方法来包含来自其他文件的 HTML 内容,就像其他文件一样。 编程语言.
  • Javascript 与 JQuery 一起是从其他文件嵌入 HTML 内容的最佳选择。
  • 另一种方式包括 HTML 其他文件的内容是使用指令和虚拟参数关键字。虚拟参数关键字用于表示需要嵌入的文件。这称为服务器端包含。
  • Angular 还提供了使用 ng-include 指令来包含文件的功能。此指令可用于将外部文件中的代码直接注入到主 HTML 文件中。