Подтвердить что ты не робот

Как иметь общий заголовок, общий для всех веб-страниц в AngularJS?

Я хотел бы иметь заголовок .html, который определяет, как будет выглядеть заголовок для всех моих веб-страниц. Как я могу вставить этот header.html в другие веб-страницы вверху?

Там могут быть лучшие методы для достижения общего заголовка, который будет использоваться совместно. Поскольку я все еще считаю себя новичком в html (но не для программирования), я открыт для лучших предложений.

Спасибо.

EDIT: полезные ответы упомянули с помощью PHP. Тем не менее, я использую AngularJS в качестве front-end, а мой PHP-сервер - просто чистый сервер REST. Мое предпочтение - сделать это способом AngularJS, а не способом PHP.

4b9b3361

Ответ 1

Решение AngularJS будет выглядеть так:

<!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head>
  <script src='angular.js'></script>
  <script src='main.js'></script>
</head>
<body>
<div ng-controller="HeaderCtrl">
  <div ng-include src="header.url"></div>
  <script type="text/ng-template" id="header.html"></script>
</div>
</body>
</html>

main.js:

var myApp = angular.module('myApp', []);

function HeaderCtrl($scope) {
    $scope.header = {name: "header.html", url: "header.html"};
}

header.html:

<p> Header content goes here </p>

Причина, по которой я не просто советовал решение, такое как: <div ng-include="'header.html'"> - это избежать любой задержки при загрузке заголовка. Для получения дополнительной информации см. angularjs - Point ng-include для частичного, содержащего директиву script.

В качестве альтернативы jQuery вам понравится.

<html> 
  <head> 
    <script src="jquery.js"></script> 
    <script> 
    $(function(){
      $("#headerContent").load("header.html"); 
    });
    </script> 
  </head> 
  <body> 
     <div id="headerContent"></div>
  </body> 
</html>

Наконец, решение PHP будет выглядеть так:

<html> 
  <head> 
  </head> 
  <body> 
    <?php include('header.html'); ?>  
  </body> 
</html>

Желаем удачи!

Ответ 2

Другие предоставленные ответы пропустят точку здесь клиента, используя Angular.js. Angular действительно предназначен для этой концепции. Существует несколько способов достижения клиентских шаблонов с помощью Angular.js.

  • Использование Angular в качестве приложения с одной страницей (SPA), где вы динамически меняете контент в одном документе HTML, а не перенаправляете на разные страницы.

  • Использование Angular Директив для инкапсуляции общих функций страницы.

Вы можете использовать комбинацию из 2 для достижения практически любой комбинации макета страницы.

используя angular поставщик маршрутов или плагин, например angular UI-Router, вы можете определите общую HTML-страницу, а на странице HTML используйте директиву ng-view для обозначения динамической замены раздела вашей страницы во время выполнения. вы можете определить html-шаблоны, которые заполняют динамический раздел.

Используя директивы, вы можете создавать новые HTML-элементы для разработки более выразительного макета страницы. Например, вы можете определить директиву my-menubar, содержащую HTML-шаблоны, элементы javascript, даже бизнес-логику, а затем включить строку меню на любую страницу, просто используя синтаксис типа <div my-menubar />. Директивы очень эффективны, и я настоятельно рекомендую прочитать их в angular Руководство разработчика.

Пример простой страницы, которая может использовать эти функции:

<div ng-controller=MainController>
    <div main-menu />
    <div ng-view> </div>
    <div page-footer />
</div>

В нижней строке вам не нужен сервер для выполнения логики для воспроизводимого кода, так как Angular.js предназначен именно для этой цели.

Ответ 3

Как я обычно справляюсь с этим, и он позволяет больше, чем заголовок, должен иметь shell.html

Это может выглядеть так:

<div ng-controller="ShellController">
  <div ng-include="'app/shell/header/header.html'"></div>
  <div ng-view></div>
  <div ng-include="'app/shell/footer/footer.html'"></div?>
</div>

Где вы ng-including статические биты, и вы используете Angulars ngRoute (или ui-router)