AngularJS Bootstrap


Предпочитаемая таблица стилей AngularJS — Twitter Bootstrap. В настоящее время Twitter Bootstrap является самым популярным фронтенд-фреймворком.

Просмотреть руководство по Bootstrap。


Bootstrap

Вы можете добавить Twitter Bootstrap в своё приложение AngularJS. Вы можете добавить следующий код в элемент <head>:

<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">

Если сайт находится в Китае, рекомендуется использовать Bootstrap из библиотеки статических ресурсов Baidu. Код выглядит следующим образом:

<link rel="stylesheet" href="//apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.min.css">

Ниже приведён полный пример HTML, в котором используются директивы AngularJS и классы Bootstrap.


HTML-код

<!DOCTYPE html>
<html>
<link rel="stylesheet" href="http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.min.css">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
<body ng-app="myApp" ng-controller="userCtrl">

<div class="container">

<h3>Пользователи</h3>

<table class="table table-striped">
  <thead><tr>
    <th>Изменить</th>
    <th>Имя</th>
    <th>Фамилия</th>
  </tr></thead>
  <tbody><tr ng-repeat="user in users">
    <td>
      <button class="btn" ng-click="editUser(user.id)">
      <span class="glyphicon glyphicon-pencil"></span>&nbsp;&nbsp;Редактировать
      </button>
    </td>
    <td>{{ user.fName }}</td>
    <td>{{ user.lName }}</td>
  </tr></tbody>
</table>

<hr>
<button class="btn btn-success" ng-click="editUser('new')">
  <span class="glyphicon glyphicon-user"></span> Создать нового пользователя
</button>
<hr>

<h3 ng-show="edit">Создать нового пользователя:</h3>
<h3 ng-hide="edit">Редактировать пользователя:</h3>

<form class="form-horizontal">
<div class="form-group">
  <label class="col-sm-2 control-label">Имя:</label>
  <div class="col-sm-10">
    <input type="text" ng-model="fName" ng-disabled="!edit" placeholder="Имя">
  </div>
</div>
<div class="form-group">
  <label class="col-sm-2 control-label">Фамилия:</label>
  <div class="col-sm-10">
    <input type="text" ng-model="lName" ng-disabled="!edit" placeholder="Фамилия">
  </div>
</div>
<div class="form-group">
  <label class="col-sm-2 control-label">Пароль:</label>
  <div class="col-sm-10">
    <input type="password" ng-model="passw1" placeholder="Пароль">
  </div>
</div>
<div class="form-group">
  <label class="col-sm-2 control-label">Повторите:</label>
  <div class="col-sm-10">
    <input type="password" ng-model="passw2" placeholder="Повторите пароль">
  </div>
</div>
</form>

<hr>
<button class="btn btn-success" ng-disabled="error || incomplete">
  <span class="glyphicon glyphicon-save"></span> Сохранить Изменения
</button>
</div>

<script src = "myUsers.js"></script>
</body>
</html>

Попробуйте »


Объяснение директивы

Директивы AngularJS Описание
<html ng-app Определите приложение (без имени) для элемента <html>
<body ng-controller Определите контроллер для элемента <body>
<tr ng-repeat Перебрать массив объектов users, помещая каждый объект пользователя в элемент <tr>.
<button ng-click Вызвать функцию editUser() при щелчке по элементу <button>
<h3 ng-show Если edit = true, отобразить элемент <h3>
<h3 ng-hide Если edit = true, скрыть элемент <h3>
<input ng-model Привязать элемент <input> к приложению
<button ng-disabled Если возникает ошибка или incomplete = true, отключить элемент <button>


Объяснение класса Bootstrap

Элемент Классы Bootstrap Определение
<div> container Контейнер содержимого
<table> table Таблица
<table> table-striped Таблица с полосатым фоном
<button> btn Кнопка
<button> btn-success Кнопка успеха
<span> glyphicon Glyphicon
<span> glyphicon-pencil Значок карандаша
<span> glyphicon-user Значок пользователя
<span> glyphicon-save Значок сохранения
<form> form-horizontal Горизонтальная форма
<div> form-group Группа формы
<label> control-label Метка элемента управления
<label> col-sm-2 Занимает 2 столбца
<div> col-sm-10 Занимает 10 столбцов


Код JavaScript

myUsers.js

angular.module('myApp', []).controller('userCtrl', function($scope) {
$scope.fName = '';
$scope.lName = '';
$scope.passw1 = '';
$scope.passw2 = '';
$scope.users = [
{id:1, fName:'Hege', lName:"Pege" },
{id:2, fName:'Kim', lName:"Pim" },
{id:3, fName:'Sal', lName:"Smith" },
{id:4, fName:'Jack', lName:"Jones" },
{id:5, fName:'John', lName:"Doe" },
{id:6, fName:'Peter',lName:"Pan" }
];
$scope.edit = true;
$scope.error = false;
$scope.incomplete = false;

$scope.editUser = function(id) {
  if (id == 'new') {
    $scope.edit = true;
    $scope.incomplete = true;
    $scope.fName = '';
    $scope.lName = '';
    } else {
    $scope.edit = false;
    $scope.fName = $scope.users[id-1].fName;
    $scope.lName = $scope.users[id-1].lName;
  }
};

$scope.$watch('passw1',function() {$scope.test();});
$scope.$watch('passw2',function() {$scope.test();});
$scope.$watch('fName', function() {$scope.test();});
$scope.$watch('lName', function() {$scope.test();});

$scope.test = function() {
  if ($scope.passw1 !== $scope.passw2) {
    $scope.error = true;
    } else {
    $scope.error = false;
  }
  $scope.incomplete = false;
  if ($scope.edit && (!$scope.fName.length ||
  !$scope.lName.length ||
  !$scope.passw1.length || !$scope.passw2.length)) {
     $scope.incomplete = true;
  }
};

});


Объяснение кода JavaScript

Свойства области видимости Назначение
$scope.fName Переменная модели (имя пользователя)
$scope.lName Переменная модели (фамилия пользователя)
$scope.passw1 Переменная модели (пароль пользователя 1)
$scope.passw2 Переменная модели (пароль пользователя 2)
$scope.users Переменная модели (массив пользователей)
$scope.edit Устанавливается в true, когда пользователь нажимает Create User.
$scope.error Если passw1 не равен passw2, устанавливается в true.
$scope.incomplete Если какое-либо поле пустое (length = 0), установите в true.
$scope.editUser Установить переменные модели
$scope.watch Следить за переменными модели
$scope.test Проверьте переменные модели на наличие ошибок и полноту.
Другие расширения