【发布时间】:2012-08-29 17:06:46
【问题描述】:
我刚刚阅读了introduction to Angular JS,但我没有看到任何关于一次编写 HTML 页眉代码和页脚代码并将其包含在所有页面中的方法。
是否有官方/推荐的方式来做到这一点?
【问题讨论】:
标签: angularjs
我刚刚阅读了introduction to Angular JS,但我没有看到任何关于一次编写 HTML 页眉代码和页脚代码并将其包含在所有页面中的方法。
是否有官方/推荐的方式来做到这一点?
【问题讨论】:
标签: angularjs
如果您正在创建单页 Web 应用程序(例如,使用 $routeProvider 的可收藏视图/页面),您可以将页眉和页脚直接放入 index.html(或使用 ng-include),然后使用 @987654321 @ 在视图/页面之间切换:
<html ng-app>
<head>
<script src="http://code.angularjs.org/angular-1.0.1.min.js"></script>
</head>
<body>
... header here, or use ng-include ...
<div ng-view></div>
... footer here, or use ng-include ...
</body>
</html>
【讨论】:
ngInclude 在将更多或更少的外部内容插入页面时最有帮助。但是页眉/页脚通常是页面布局的一部分。
官方的做法是使用ngInclude指令,即"fetches, compiles and includes an external HTML fragment".
<html ng-app>
<head>
<script src="http://code.angularjs.org/angular-1.0.1.min.js"></script>
</head>
<body>
<div ng-include src="'header.url'"></div>
...
<div ng-include src="'footer.url'"></div>
</body>
</html>
这样,您可以在所有页面中重复使用相同的 header.url 和 footer.url。
【讨论】:
我刚刚找到了另一种在多个视图中包含同一段代码的方法:
=> 创建和使用你自己的 Angular '指令'
1) 定义一个指令:
angular.module('myApp')
.directive('appfooter', function() {
return {
templateUrl: 'widgets/footer.html'
};
});
2) 在此处创建名为“widgets/footer.html”的模板。
3) 使用你的新指令:
<div appfooter></div>
参考文献:
希望对你有帮助
【讨论】:
我建议您将标签移到页面末尾以缩短应用程序加载时间,因为 html 加载不会被 angular 阻止
</head>
<body>
<div ng-include src="header.url"></div>
...
<div ng-include src="footer.url"></div>
<script src="http://code.angularjs.org/angular-1.0.1.min.js"></script>
</body>
【讨论】: