AngularJS
Встроенные директивы
Поиск…
Угловые выражения - текст и номер
В этом примере показано, как вычисляются угловые выражения при использовании type="text"
и type="number"
для элемента ввода. Рассмотрим следующий контроллер и представление:
контроллер
var app = angular.module('app', []);
app.controller('ctrl', function($scope) {
$scope.textInput = {
value: '5'
};
$scope.numberInput = {
value: 5
};
});
Посмотреть
<div ng-app="app" ng-controller="ctrl">
<input type="text" ng-model="textInput.value">
{{ textInput.value + 5 }}
<input type="number" ng-model="numberInput.value">
{{ numberInput.value + 5 }}
</div>
- При использовании
+
в выражении, привязанном к текстовому вводу, оператор объединяет строки (первый пример), отображая 55 на экране*
. - При использовании
+
в выражении, связанном с номером ввода, оператор возвращает сумму чисел (второй пример), отображая 10 на экране*
.
*
- То есть, пока пользователь не изменит значение в поле ввода, после этого дисплей изменится соответствующим образом.
ngRepeat
ng-repeat
- встроенная директива в Angular, которая позволяет вам перебирать массив или объект и дает вам возможность повторять элемент один раз для каждого элемента в коллекции.
ng-повторить массив
<ul>
<li ng-repeat="item in itemCollection">
{{item.Name}}
</li>
</ul>
Куда:
item = отдельный элемент в коллекции
itemCollection = массив, который вы повторяете
ng-повторить объект
<ul>
<li ng-repeat="(key, value) in myObject">
{{key}} : {{value}}
</li>
</ul>
Куда:
key = имя свойства
value = значение свойства
myObject = объект, который вы повторяете
отфильтруйте свой ng-repeat по пользовательскому вводу
<input type="text" ng-model="searchText">
<ul>
<li ng-repeat="string in stringArray | filter:searchText">
{{string}}
</li>
</ul>
Куда:
searchText = текст, который пользователь хочет отфильтровать список
stringArray = массив строк, например ['string', 'array']
Вы также можете отображать или ссылаться на отфильтрованные элементы в другом месте, назначая выход фильтра псевдонимам с as aliasName
, например:
<input type="text" ng-model="searchText">
<ul>
<li ng-repeat="string in stringArray | filter:searchText as filteredStrings">
{{string}}
</li>
</ul>
<p>There are {{filteredStrings.length}} matching results</p>
ng-repeat-start и ng-repeat-end
Чтобы повторить несколько элементов DOM, определив начало и конечную точку, вы можете использовать директивы ng-repeat-start
и ng-repeat-end
.
<ul>
<li ng-repeat-start="item in [{a: 1, b: 2}, {a: 3, b:4}]">
{{item.a}}
</li>
<li ng-repeat-end>
{{item.b}}
</li>
</ul>
Выход:
- 1
- 2
- 3
- 4
Важно всегда закрывать ng-repeat-start
с ng-repeat-end
.
переменные
ng-repeat
также предоставляет эти переменные внутри выражения
переменная | Тип | подробности |
---|---|---|
$index | Число | Равна индексу текущей итерации ($ index === 0 будет оценивать значение true на первом итерированном элементе, $first увидеть $first ) |
$first | логический | Вычисляет значение true при первом повторном элементе |
$last | логический | Вычисляет значение true при последнем повторном элементе |
$middle | логический | Вычисляет значение true, если элемент находится между $first и $last |
$even | логический | Вычисляет значение true при четной итерации (эквивалентно $index%2===0 ) |
$odd | логический | Вычисляет значение true при нечетной итерации (эквивалентно $index%2===1 ) |
Требования к производительности
Рендеринг ngRepeat
может стать медленным, особенно при использовании больших коллекций.
Если объекты в коллекции имеют свойство идентификатора, вы всегда должны track by
идентификатор, а не весь объект, который является функциональностью по умолчанию. Если идентификатор отсутствует, вы всегда можете использовать встроенный $index
.
<div ng-repeat="item in itemCollection track by item.id">
<div ng-repeat="item in itemCollection track by $index">
Область действия ngRepeat
ngRepeat
всегда будет создавать изолированную область для ngRepeat
, поэтому следует соблюдать осторожность, если к нему нужно получить доступ к родительской области внутри повтора.
Вот простой пример, показывающий, как вы можете установить значение в своей родительской области из события click внутри ngRepeat
.
scope val: {{val}}<br/>
ctrlAs val: {{ctrl.val}}
<ul>
<li ng-repeat="item in itemCollection">
<a href="#" ng-click="$parent.val=item.value; ctrl.val=item.value;">
{{item.label}} {{item.value}}
</a>
</li>
</ul>
$scope.val = 0;
this.val = 0;
$scope.itemCollection = [{
id: 0,
value: 4.99,
label: 'Football'
},
{
id: 1,
value: 6.99,
label: 'Baseball'
},
{
id: 2,
value: 9.99,
label: 'Basketball'
}];
Если в ng-click
был только val = item.value
он не будет обновлять val
в родительской области из-за изолированной области. Вот почему доступ к родительской области осуществляется с помощью $parent
reference или с синтаксисом controllerAs
(например, ng-controller="mainController as ctrl"
).
Вложенные ng-repeat
Вы также можете использовать вложенный ng-repeat.
<div ng-repeat="values in test">
<div ng-repeat="i in values">
[{{$parent.$index}},{{$index}}] {{i}}
</div>
</div>
var app = angular.module("myApp", []);
app.controller("ctrl", function($scope) {
$scope.test = [
['a', 'b', 'c'],
['d', 'e', 'f']
];
});
Чтобы получить доступ к индексу родительского ng-repeat внутри дочернего ng-repeat, вы можете использовать $parent.$index
.
ngShow и ngHide
Директива ng-show
показывает или скрывает элемент HTML на основе того, передано ли ему выражение true или false. Если значение выражения ложно, то оно будет скрыто. Если это правда, то это покажет.
Директива ng-hide
аналогична. Однако, если значение ложно, оно отобразит элемент HTML. Когда выражение правдиво, оно скроет его.
Контроллер :
var app = angular.module('app', []);
angular.module('app')
.controller('ExampleController', ExampleController);
function ExampleController() {
var vm = this;
//Binding the username to HTML element
vm.username = '';
//A taken username
vm.taken_username = 'StackOverflow';
}
Посмотреть
<section ng-controller="ExampleController as main">
<p>Enter Password</p>
<input ng-model="main.username" type="text">
<hr>
<!-- Will always show as long as StackOverflow is not typed in -->
<!-- The expression is always true when it is not StackOverflow -->
<div style="color:green;" ng-show="main.username != main.taken_username">
Your username is free to use!
</div>
<!-- Will only show when StackOverflow is typed in -->
<!-- The expression value becomes falsy -->
<div style="color:red;" ng-hide="main.username != main.taken_username">
Your username is taken!
</div>
<p>Enter 'StackOverflow' in username field to show ngHide directive.</p>
</section>
ngOptions
ngOptions
- это директива, упрощающая создание раскрывающегося окна html для выбора элемента из массива, который будет храниться в модели. Атрибут ngOptions используется для динамического создания списка элементов <option>
для элемента <select>
используя массив или объект, полученный путем оценки выражения понимания ngOptions.
С ng-options
разметка может быть уменьшена до всего лишь тега select, и директива создаст тот же самый выбор:
<select ng-model="selectedFruitNgOptions"
ng-options="curFruit as curFruit.label for curFruit in fruit">
</select>
Существует еще один способ создания опций select
с помощью ng-repeat
, но не рекомендуется использовать ng-repeat
поскольку он в основном используется для общего использования, например, forEach
только для цикла. В то время как ng-options
специально предназначено для создания опций select
tag.
Вышеприведенный пример с использованием ng-repeat
будет
<select ng-model="selectedFruit">
<option ng-repeat="curFruit in fruit" value="{{curFruit}}">
{{curFruit.label}}
</option>
</select>
Давайте рассмотрим приведенный выше пример подробно и с некоторыми изменениями в нем.
Модель данных для примера:
$scope.fruit = [
{ label: "Apples", value: 4, id: 2 },
{ label: "Oranges", value: 2, id: 1 },
{ label: "Limes", value: 4, id: 4 },
{ label: "Lemons", value: 5, id: 3 }
];
<!-- label for value in array -->
<select ng-options="f.label for f in fruit" ng-model="selectedFruit"></select>
Тег опции, сгенерированный при выборе:
<option value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
Последствия:
f.label
будет меткой <option>
и значение будет содержать весь объект.
<!-- select as label for value in array -->
<select ng-options="f.value as f.label for f in fruit" ng-model="selectedFruit"></select>
Тег опции, сгенерированный при выборе:
<option value="4"> Apples </option>
Последствия:
f.value
(4) будет значением в этом случае, в то время как метка остается прежней.
<!-- label group by group for value in array -->
<select ng-options="f.label group by f.value for f in fruit" ng-model="selectedFruit"></select>
Тег опции, сгенерированный при выборе:
<option value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
Последствия:
Параметры будут сгруппированы в зависимости от value
. Варианты с одинаковым value
будут подпадать под одну категорию
<!-- label disable when disable for value in array -->
<select ng-options="f.label disable when f.value == 4 for f in fruit" ng-model="selectedFruit"></select>
Тег опции, сгенерированный при выборе:
<option disabled="" value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
Последствия:
«Яблоки» и «Лаймы» будут отключены (невозможно выбрать) из-за того, что условие disable when f.value==4
. Все параметры со value=4
должны быть отключены
<!-- label group by group for value in array track by trackexpr -->
<select ng-options="f.value as f.label group by f.value for f in fruit track by f.id" ng-model="selectedFruit"></select>
Тег опции, сгенерированный при выборе:
<option value="4"> Apples </option>
Последствия:
При использовании trackBy
нет визуальных изменений, но Angular обнаруживает изменения по id
вместо ссылки, которая всегда является лучшим решением.
<!-- label for value in array | orderBy:orderexpr track by trackexpr -->
<select ng-options="f.label for f in fruit | orderBy:'id' track by f.id" ng-model="selectedFruit"></select>
Тег опции, сгенерированный при выборе:
<option disabled="" value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
Последствия:
orderBy
- это стандартный фильтр AngularJS, который упорядочивает параметры в порядке возрастания (по умолчанию), поэтому «Апельсины» в этом появятся 1-м, так как его id
= 1.
Все <select>
с ng-options
должны иметь прикрепленную ng-model
.
ngModel
С ng-моделью вы можете привязать переменную к любому типу поля ввода. Вы можете отобразить переменную, используя двойные фигурные скобки, например {{myAge}}
.
<input type="text" ng-model="myName">
<p>{{myName}}</p>
Когда вы вводите поле ввода или меняете его каким-либо образом, вы сразу увидите значение в обновлении абзаца.
В этом случае переменная ng-model будет доступна в вашем контроллере как $scope.myName
. Если вы используете синтаксис controllerAs
:
<div ng-controller="myCtrl as mc">
<input type="text" ng-model="mc.myName">
<p>{{mc.myName}}</p>
</div>
Вам нужно будет обратиться к области контроллера, предварительно отложив псевдоним контроллера, определенный в атрибуте ng-controller, на переменную ng-model. Таким образом вам не нужно вводить $scope
в ваш контроллер, чтобы ссылаться на вашу переменную ng-model, переменная будет доступна как this.myName
внутри функции вашего контроллера.
ngClass
Предположим, что вам нужно показать статус пользователя, и у вас есть несколько возможных классов CSS, которые можно использовать. Угловое позволяет легко выбирать из списка нескольких возможных классов, которые позволяют указать список объектов, которые включают условные обозначения. Угловой способ может использовать правильный класс, основанный на правдивости условностей.
Ваш объект должен содержать пары ключ / значение. Ключ - это имя класса, которое будет применяться, когда значение (условное) будет равно true.
<style>
.active { background-color: green; color: white; }
.inactive { background-color: gray; color: white; }
.adminUser { font-weight: bold; color: yellow; }
.regularUser { color: white; }
</style>
<span ng-class="{
active: user.active,
inactive: !user.active,
adminUser: user.level === 1,
regularUser: user.level === 2
}">John Smith</span>
Угловой будет проверять объект $scope.user
чтобы увидеть active
статус и номер level
. В зависимости от значений этих переменных, Angular будет применять стиль соответствия к <span>
.
ngIf
ng-if
- директива, подобная ng-show
но вставляет или удаляет элемент из DOM вместо простого его скрытия. Угловая 1.1.5 введена директива ng-If. Вы можете использовать директиву ng-if выше версий 1.1.5. Это полезно, потому что Angular не будет обрабатывать дайджесты для элементов внутри удаленной ng-if
уменьшить рабочую нагрузку Angular, особенно для сложных привязок данных.
В отличие от ng-show
, директива ng-if
создает дочернюю область, которая использует прототипное наследование. Это означает, что установка примитивного значения в области дочерних объектов не будет применяться к родительскому элементу. Чтобы установить примитив в родительской области, необходимо использовать свойство $parent
в области дочернего объекта.
JavaScript
angular.module('MyApp', []);
angular.module('MyApp').controller('myController', ['$scope', '$window', function myController($scope, $window) {
$scope.currentUser= $window.localStorage.getItem('userName');
}]);
Посмотреть
<div ng-controller="myController">
<div ng-if="currentUser">
Hello, {{currentUser}}
</div>
<div ng-if="!currentUser">
<a href="/login">Log In</a>
<a href="/register">Register</a>
</div>
</div>
DOM Если currentUser
является неопределенным
<div ng-controller="myController">
<div ng-if="currentUser">
Hello, {{currentUser}}
</div>
<!-- ng-if: !currentUser -->
</div>
DOM Если currentUser
не определено
<div ng-controller="myController">
<!-- ng-if: currentUser -->
<div ng-if="!currentUser">
<a href="/login">Log In</a>
<a href="/register">Register</a>
</div>
</div>
Функция обещания
Директива ngIf также принимает функции, которые логически требуют возврата true или false.
<div ng-if="myFunction()">
<span>Span text</span>
</div>
Текст диапазона появится, только если функция вернет значение true.
$scope.myFunction = function() {
var result = false;
// Code to determine the boolean value of result
return result;
};
Как любое угловое выражение, функция принимает любые переменные.
ngMouseenter и ngMouseleave
ng-mouseenter
и ng-mouseleave
полезны для запуска событий и применения стилизации CSS, когда вы наводите на себя или вне своих элементов DOM.
В директиве ng-mouseenter
выполняется выражение, которое является одним из событий ввода мыши (когда пользователь вводит указатель мыши над элементом DOM, в котором находится эта директива)
HTML
<div ng-mouseenter="applyStyle = true" ng-class="{'active': applyStyle}">
В приведенном выше примере, когда пользователь наводит указатель мыши на div
, applyStyle
обращается к true
, что, в свою очередь, применяет класс .active
CSS в ng-class
.
Директива ng-mouseleave
выполняет выражение одно событие выхода мыши (когда пользователь отводит указатель мыши от элемента DOM, в котором находится эта директива)
HTML
<div ng-mouseenter="applyStyle = true" ng-mouseleaver="applyStyle = false" ng-class="{'active': applyStyle}">
Повторяя первый пример, теперь, когда пользователь убирает указатель мыши из div, класс .active
удаляется.
ngDisabled
Эта директива полезна для ограничения входных событий на основе определенных существующих условий.
Директива ng-disabled
принимает и выражение, которое должно оценивать как правдивые, так и ложные значения.
ng-disabled
используется для условного применения disabled
атрибута на input
элементе.
HTML
<input type="text" ng-model="vm.name">
<button ng-disabled="vm.name.length===0" ng-click="vm.submitMe">Submit</button>
vm.name.length===0
оценивается как true, если длина input
равна 0, что отключает кнопку, vm.name.length===0
событие click ng-click
ngDblclick
Директива ng-dblclick
полезна, когда вы хотите привязать событие двойного щелчка к вашим элементам DOM.
Эта директива принимает выражение
HTML
<input type="number" ng-model="num = num + 1" ng-init="num=0">
<button ng-dblclick="num++">Double click me</button>
В приведенном выше примере значение, удерживаемое на input
будет увеличиваться при двойном нажатии кнопки.
Встроенные директивы Cheat Sheet
ng-app
Устанавливает раздел AngularJS.
ng-init
Устанавливает значение переменной по умолчанию.
ng-bind
Альтернатива шаблону {{}}.
ng-bind-template
Привязывает к выражению несколько выражений.
ng-non-bindable
утверждает, что данные не являются связываемыми.
ng-bind-html
Связывает внутреннее свойство HTML элемента HTML.
ng-change
Вычисляет указанное выражение, когда пользователь меняет ввод.
ng-checked
Устанавливает флажок.
ng-class
Устанавливает класс css динамически.
ng-cloak
Предотвращает показ содержимого до тех пор, пока AngularJS не примет управление.
ng-click
Выполняет метод или выражение при нажатии элемента.
ng-controller
Присоединяет класс контроллера к представлению.
ng-disabled
Управляет отключенным свойством элемента формы
ng-form
Устанавливает форму
ng-href
Динамически связывать переменные AngularJS с атрибутом href.
ng-include
Используется для извлечения, компиляции и включения внешнего HTML-фрагмента на вашу страницу.
ng-if
Удалить или воссоздать элемент в DOM в зависимости от выражения
ng-switch
Условное управление переключением на основе соответствия выражения.
ng-model
Привязывает элементы ввода, select, textarea и т. д. с свойством model.
ng-readonly
Используется для установки атрибута readonly для элемента.
ng-repeat
Используется для прокрутки каждого элемента в коллекции для создания нового шаблона.
ng-selected
Используется для установки выбранной опции в элементе.
ng-show/ng-hide
Показать / скрыть элементы на основе выражения.
ng-src
Динамически связывать переменные AngularJS с атрибутом src.
ng-submit
Привязать угловые выражения к событиям onsubmit.
ng-value
Привяжите угловые выражения к значению.
ng-required
Привязать угловые выражения к событиям onsubmit.
ng-style
Устанавливает ng-style
CSS в HTML-элементе.
ng-pattern
Добавляет шаблонный шаблон для ngModel.
ng-maxlength
Добавляет модуль проверки maxlength в ngModel.
ng-minlength
Добавляет средство проверки длины minlength в ngModel.
ng-classeven
Работает совместно с ngRepeat и вступает в силу только с нечетными (четными) строками.
ng-classodd
Работает совместно с ngRepeat и вступает в силу только для нечетных (четных) строк.
ng-cut
Используется для указания пользовательского поведения на событии cut.
ng-copy
Используется для указания пользовательского поведения в событии копирования.
ng-paste
Используется для указания пользовательского поведения при вставке.
ng-options
Используется для динамического создания списка элементов для элемента.
ng-list
Используется для преобразования строки в список на основе указанного разделителя.
ng-open
Используется для установки атрибута open для элемента, если выражение внутри ngOpen является правдивым.
Источник (отредактирован немного)
ngClick
Директива ng-click
прикрепляет событие click к элементу DOM.
Директива ng-click
позволяет указать настраиваемое поведение при нажатии элемента DOM.
Это полезно, когда вы хотите прикреплять события кликов на кнопках и обрабатывать их на контроллере.
Эта директива принимает выражение с объектом событий, доступным как $event
HTML
<input ng-click="onClick($event)">Click me</input>
контроллер
.controller("ctrl", function($scope) {
$scope.onClick = function(evt) {
console.debug("Hello click event: %o ",evt);
}
})
HTML
<button ng-click="count = count + 1" ng-init="count=0">
Increment
</button>
<span>
count: {{count}}
</span>
HTML
<button ng-click="count()" ng-init="count=0">
Increment
</button>
<span>
count: {{count}}
</span>
контроллер
...
$scope.count = function(){
$scope.count = $scope.count + 1;
}
...
Когда нажимается кнопка, вызов функции onClick
будет печатать «Hello click event», за которым следует объект события.
ngRequired
ng-required
добавляют или удаляют required
атрибут проверки на элемент, который , в свою очередь , будет включать и выключать require
проверки ключа для input
.
Он используется для опционального определения того, требуется ли input
элементу иметь непустое значение. Директива полезна при разработке валидации на сложных HTML-формах.
HTML
<input type="checkbox" ng-model="someBooleanValue">
<input type="text" ng-model="username" ng-required="someBooleanValue">
нг-модель-опция
ng-model-options
позволяют изменять поведение ng-model
по умолчанию, эта директива позволяет регистрировать события, которые будут срабатывать при обновлении ng-модели и приложить эффект отладки.
Эта директива принимает выражение, которое будет оценивать объект определения или ссылку на значение области.
Пример:
<input type="text" ng-model="myValue" ng-model-options="{'debounce': 500}">
В приведенном выше примере будет добавлен эффект myValue
500 миллисекунд на myValue
, который заставит модель обновить 500 мс после того, как пользователь завершит ввод текста над input
(то есть, когда myValue
закончит обновление).
Доступные свойства объекта
updateOn
: указывает, какое событие должно быть привязано к вводуng-model-options="{ updateOn: 'blur'}" // will update on blur
debounce
: указывает задержку в несколько миллисекунд к обновлению моделиng-model-options="{'debounce': 500}" // will update the model after 1/2 second
allowInvalid
: логический флаг, допускающий недопустимое значение модели, обходя проверку по умолчанию по умолчанию, по умолчанию эти значения будут считатьсяundefined
.getterSetter
: логический флаг, указывающий, следует ли рассматриватьng-model
как функцию getter / setter вместо значения простой модели. Затем функция запустится и вернет значение модели.Пример:
<input type="text" ng-model="myFunc" ng-model-options="{'getterSetter': true}"> $scope.myFunc = function() {return "value";}
timezone
: определяет часовой пояс для модели, если ввод имеетdate
илиtime
. типы
ngCloak
Директива
ngCloak
используется для предотвращения кратковременного отображения браузера в виде необработанной (не скомпилированной) формы, когда приложение загружается. - Просмотр источника
HTML
<div ng-cloak>
<h1>Hello {{ name }}</h1>
</div>
ngCloak
можно применить к элементу body, но предпочтительным применением является применение нескольких директив ngCloak к небольшим частям страницы, чтобы обеспечить прогрессивную визуализацию просмотра браузера.
Директива ngCloak
не имеет параметров.
См. Также: Предотвращение мерцания
ngInclude
ng-include позволяет делегировать управление одной частью страницы конкретному контроллеру. Вы можете сделать это, потому что сложность этого компонента становится такой, что вы хотите инкапсулировать всю логику в выделенный контроллер.
Пример:
<div ng-include
src="'/gridview'"
ng-controller='gridController as gc'>
</div>
Обратите внимание, что /gridview
должен обслуживаться веб-сервером как отдельный и законный URL-адрес.
Также обратите внимание, что src
Attribute принимает угловое выражение. Это может быть вызов переменной или функции, например, или, как в этом примере, строковая константа. В этом случае вам нужно обязательно обернуть исходный URL в одинарные кавычки , поэтому он будет оцениваться как строковая константа. Это общий источник путаницы.
Внутри /gridview
html вы можете ссылаться на gridController
как если бы он был обернут вокруг страницы, например:
<div class="row">
<button type="button" class="btn btn-default" ng-click="gc.doSomething()"></button>
</div>
ngSrc
Использование Угловой разметки, такой как {{hash}}
в атрибуте src, не работает правильно. Браузер будет извлекать из URL с буквальным текстом {{hash}}
пока Angular не заменит выражение внутри {{hash}}
. Директива ng-src
переопределяет исходный атрибут src
для элемента тега изображения и решает проблему
<div ng-init="pic = 'pic_angular.jpg'">
<h1>Angular</h1>
<img ng-src="{{pic}}">
</div>
ngPattern
Директива ng-pattern
принимает выражение, которое оценивает шаблон регулярного выражения и использует этот шаблон для проверки текстового ввода.
Пример:
Допустим, мы хотим, чтобы элемент <input>
стал действительным, когда его значение (ng-model) является допустимым IP-адресом.
Шаблон:
<input type="text" ng-model="ipAddr" ng-pattern="ipRegex" name="ip" required>
контроллер:
$scope.ipRegex = /\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/;
ngValue
В основном используется в ng-repeat
ngValue полезно при динамическом создании списков переключателей с помощью ngRepeat
<script>
angular.module('valueExample', [])
.controller('ExampleController', ['$scope', function($scope) {
$scope.names = ['pizza', 'unicorns', 'robots'];
$scope.my = { favorite: 'unicorns' };
}]);
</script>
<form ng-controller="ExampleController">
<h2>Which is your favorite?</h2>
<label ng-repeat="name in names" for="{{name}}">
{{name}}
<input type="radio"
ng-model="my.favorite"
ng-value="name"
id="{{name}}"
name="favorite">
</label>
<div>You chose {{my.favorite}}</div>
</form>
ngCopy
Директива ngCopy
указывает поведение, которое должно выполняться в событии копирования.
Предотвращение копирования пользователем данных
<p ng-copy="blockCopy($event)">This paragraph cannot be copied</p>
В контроллере
$scope.blockCopy = function(event) {
event.preventDefault();
console.log("Copying won't work");
}
ngPaste
Директива ngPaste
определяет пользовательское поведение для запуска, когда пользователь вставляет содержимое
<input ng-paste="paste=true" ng-init="paste=false" placeholder='paste here'>
pasted: {{paste}}
ngHref
ngHref используется вместо атрибута href, если у нас есть угловые выражения внутри значения href. Директива ngHref переопределяет исходный атрибут href тега html с использованием атрибута href, такого как тег, тег и т. Д.
Директива ngHref гарантирует, что ссылка не будет нарушена, даже если пользователь нажимает ссылку до того, как AngularJS проверит код.
Пример 1
<div ng-init="linkValue = 'http://stackoverflow.com'">
<p>Go to <a ng-href="{{linkValue}}">{{linkValue}}</a>!</p>
</div>
Пример 2 Этот пример динамически получает значение href из поля ввода и загружает его как значение href.
<input ng-model="value" />
<a id="link" ng-href="{{value}}">link</a>
Пример 3.
<script>
angular.module('angularDoc', [])
.controller('myController', function($scope) {
// Set some scope value.
// Here we set bootstrap version.
$scope.bootstrap_version = '3.3.7';
// Set the default layout value
$scope.layout = 'normal';
});
</script>
<!-- Insert it into Angular Code -->
<link rel="stylesheet" ng-href="//maxcdn.bootstrapcdn.com/bootstrap/{{ bootstrap_version }}/css/bootstrap.min.css">
<link rel="stylesheet" ng-href="layout-{{ layout }}.css">
ngList
Директива ng-list
используется для преобразования строки с разделителями из текстового ввода в массив строк или наоборот.
Директива ng-list
использует разделитель по умолчанию ", "
(запятая).
Вы можете установить разделитель вручную, назначив ng-list
делителю, подобному этому ng-list="; "
.
В этом случае разделитель устанавливается в полуточку с последующим пробелом.
По умолчанию ng-list
имеет атрибут ng-trim
которого установлено значение true. ng-trim
когда false, будет соблюдать пробелы в вашем разделителе. По умолчанию ng-list
не учитывает пробелы, если вы не установите ng-trim="false"
.
Пример:
angular.module('test', [])
.controller('ngListExample', ['$scope', function($scope) {
$scope.list = ['angular', 'is', 'cool!'];
}]);
Пользовательский разделитель установлен ;
, И модель окна ввода устанавливается в массив, который был создан в области.
<body ng-app="test" ng-controller="ngListExample">
<input ng-model="list" ng-list="; " ng-trim="false">
</body>
Поле ввода будет отображаться с содержимым: angular; is; cool!