AngularJS
Wbudowane dyrektywy
Szukaj…
Wyrażenia kątowe - tekst a liczba
Ten przykład pokazuje, w jaki sposób wyrażenia kątowe są obliczane przy użyciu type="text"
i type="number"
dla elementu wejściowego. Rozważ następujący kontroler i zobacz:
Kontroler
var app = angular.module('app', []);
app.controller('ctrl', function($scope) {
$scope.textInput = {
value: '5'
};
$scope.numberInput = {
value: 5
};
});
Widok
<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>
- Gdy używasz
+
w wyrażeniu powiązanym z wprowadzaniem tekstu , operator połączy łańcuchy (pierwszy przykład), wyświetlając 55 na ekranie*
. - Gdy używasz
+
w wyrażeniu powiązanym z wprowadzaniem liczb , operator zwraca sumę liczb (drugi przykład), wyświetlając 10 na ekranie*
.
*
- To znaczy, dopóki użytkownik nie zmieni wartości w polu wprowadzania, potem wyświetlacz odpowiednio się zmieni.
ngRepeat
ng-repeat
jest wbudowaną dyrektywą w Angular, która pozwala iterować tablicę lub obiekt i daje możliwość powtarzania elementu raz dla każdego elementu w kolekcji.
ng-powtórz tablicę
<ul>
<li ng-repeat="item in itemCollection">
{{item.Name}}
</li>
</ul>
Gdzie:
item = pojedynczy element w kolekcji
itemCollection = Tablica, którą iterujesz
powtórz obiekt
<ul>
<li ng-repeat="(key, value) in myObject">
{{key}} : {{value}}
</li>
</ul>
Gdzie:
klucz = nazwa właściwości
wartość = wartość właściwości
myObject = obiekt, który iterujesz
filtruj powtórzenie ng według danych wprowadzonych przez użytkownika
<input type="text" ng-model="searchText">
<ul>
<li ng-repeat="string in stringArray | filter:searchText">
{{string}}
</li>
</ul>
Gdzie:
searchText = tekst, według którego użytkownik chce filtrować listę
stringArray = tablica ciągów znaków, np. ['string', 'array']
Możesz także wyświetlić lub odfiltrować elementy w innym miejscu, przypisując wyjściu filtru alias z as aliasName
, na przykład:
<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 i ng-repeat-end
Aby powtórzyć wiele elementów DOM poprzez zdefiniowanie punktu początkowego i końcowego, można użyć dyrektyw ng-repeat-start
i 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>
Wynik:
- 1
- 2)
- 3)
- 4
Ważne jest, aby zawsze zamykać ng-repeat-start
z ng-repeat-end
.
Zmienne
ng-repeat
ujawnia również te zmienne w wyrażeniu
Zmienna | Rodzaj | Detale |
---|---|---|
$index | Numer | Równa się indeksowi bieżącej iteracji ($ index === 0 przy pierwszym iterowanym elemencie uzyska wartość true; patrz $first ) |
$first | Boolean | Sprawdza się jako prawda przy pierwszym iterowanym elemencie |
$last | Boolean | Ocenia wartość true w ostatnim iterowanym elemencie |
$middle | Boolean | Wyznacza wartość true, jeśli element znajduje się między $first a $last |
$even | Boolean | Ocenia wartość true przy parzystej iteracji (odpowiednik $index%2===0 ) |
$odd | Boolean | Sprawdza się jako prawda przy iteracji nieparzystej (odpowiednik $index%2===1 ) |
Uwagi dotyczące wydajności
Renderowanie ngRepeat
może stać się powolne, szczególnie przy użyciu dużych kolekcji.
Jeśli obiekty w kolekcji mają właściwość identifier, zawsze należy track by
identyfikatora zamiast całego obiektu, co jest funkcją domyślną. Jeśli nie ma identyfikatora, zawsze możesz użyć wbudowanego $index
.
<div ng-repeat="item in itemCollection track by item.id">
<div ng-repeat="item in itemCollection track by $index">
Zakres ngRepeat
ngRepeat
zawsze tworzy izolowany zakres potomny, dlatego należy zachować ostrożność, jeśli zakres macierzysty musi być dostępny wewnątrz powtórzenia.
Oto prosty przykład pokazujący, jak ustawić wartość w zakresie nadrzędnym na podstawie zdarzenia kliknięcia w 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'
}];
Jeśli nie było tylko val = item.value
w ng-click
nie będzie aktualizować val
w zakresie dominującej ze względu na pojedyncze zakresie. Dlatego dostęp do zakresu nadrzędnego jest uzyskiwany za pomocą $parent
ng-controller="mainController as ctrl"
Reference lub składni controllerAs
(np. ng-controller="mainController as ctrl"
).
Zagnieżdżone powtórzenie ng
Możesz także użyć zagnieżdżonego 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']
];
});
Tutaj, aby uzyskać dostęp do indeksu nadrzędnego powtórzenia ng wewnątrz podrzędnego powtórzenia ng, możesz użyć $parent.$index
.
ngShow i ngHide
Dyrektywa ng-show
pokazuje lub ukrywa element HTML na podstawie tego, czy przekazane mu wyrażenie jest prawdziwe czy fałszywe. Jeśli wartością wyrażenia jest fałsz, wówczas się ukryje. Jeśli to prawda, to pokaże.
Dyrektywa ng-hide
jest podobna. Jeśli jednak wartość jest fałszywa, pokaże element HTML. Kiedy wyrażenie jest prawdziwe, ukryje je.
Kontroler :
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';
}
Widok
<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
to dyrektywa, która upraszcza tworzenie rozwijanego pola HTML do wyboru elementu z tablicy, która będzie przechowywana w modelu. Atrybut ngOptions służy do dynamicznego generowania listy elementów <option>
dla elementu <select>
przy użyciu tablicy lub obiektu uzyskanego przez ocenę wyrażenia rozumienia ngOptions.
Dzięki ng-options
znaczniki można zredukować do tylko znacznika select, a dyrektywa utworzy ten sam wybór:
<select ng-model="selectedFruitNgOptions"
ng-options="curFruit as curFruit.label for curFruit in fruit">
</select>
Istnieje inny sposób tworzenia select
opcji za pomocą ng-repeat
, ale nie zaleca się używania ng-repeat
ponieważ jest on najczęściej używany do ogólnego celu, takiego jak forEach
tylko do zapętlenia. Natomiast ng-options
służy do tworzenia opcji select
tagów.
Powyższy przykład to użycie ng-repeat
<select ng-model="selectedFruit">
<option ng-repeat="curFruit in fruit" value="{{curFruit}}">
{{curFruit.label}}
</option>
</select>
Zobaczmy szczegółowo powyższy przykład z pewnymi jego odmianami.
Model danych na przykład:
$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>
Tag opcji generowany przy wyborze:
<option value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
Efekty:
f.label
będzie etykietą <option>
a wartość będzie zawierać cały obiekt.
<!-- select as label for value in array -->
<select ng-options="f.value as f.label for f in fruit" ng-model="selectedFruit"></select>
Tag opcji generowany przy wyborze:
<option value="4"> Apples </option>
Efekty:
f.value
(4) będzie wartością w tym przypadku, gdy etykieta jest nadal taka sama.
<!-- 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>
Tag opcji generowany przy wyborze:
<option value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
Efekty:
Opcje zostaną pogrupowane według value
. Opcje o tej samej value
będą należeć do jednej kategorii
<!-- 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>
Tag opcji generowany przy wyborze:
<option disabled="" value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
Efekty:
„Jabłka” i „Wapno” zostaną wyłączone (nie można ich wybrać) z powodu warunku disable when f.value==4
. Wszystkie opcje o value=4
zostaną wyłączone
<!-- 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>
Tag opcji generowany przy wyborze:
<option value="4"> Apples </option>
Efekty:
Podczas używania trackBy
nie następuje żadna zmiana trackBy
, ale Angular wykryje zmiany według id
zamiast referencji, co zawsze jest lepszym rozwiązaniem.
<!-- 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>
Tag opcji generowany przy wyborze:
<option disabled="" value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
Efekty:
orderBy
jest standardowym filtrem AngularJS, który porządkuje opcje w porządku rosnącym (domyślnie), więc „Pomarańcze” pojawią się na 1. miejscu, ponieważ jego id
= 1.
Wszystkie <select>
z ng-options
ng-model
muszą mieć dołączony ng-model
.
ngModel
Za pomocą modelu ng można powiązać zmienną z dowolnym typem pola wejściowego. Możesz wyświetlić zmienną za pomocą podwójnych nawiasów klamrowych, np. {{myAge}}
.
<input type="text" ng-model="myName">
<p>{{myName}}</p>
Podczas wpisywania lub wprowadzania zmian w polu wejściowym wartość w akapicie zostanie natychmiast zaktualizowana.
W tym przypadku zmienna modelu ng będzie dostępna w twoim kontrolerze jako $scope.myName
. Jeśli używasz składni controllerAs
:
<div ng-controller="myCtrl as mc">
<input type="text" ng-model="mc.myName">
<p>{{mc.myName}}</p>
</div>
Będziesz musiał odwoływać się do zakresu kontrolera, uprzednio oczekując na alias kontrolera zdefiniowany w atrybucie ng-controller do zmiennej ng-model. W ten sposób nie będziesz musiał wstrzykiwać $scope
do kontrolera, aby odwoływał się do zmiennej modelu ng, zmienna będzie dostępna jako this.myName
w funkcji twojego kontrolera.
ngClass
Załóżmy, że musisz pokazać status użytkownika i masz kilka możliwych klas CSS, które mogą być użyte. Angular sprawia, że bardzo łatwo jest wybierać z listy kilku możliwych klas, które pozwalają określić listę obiektów zawierającą warunki warunkowe. Angular jest w stanie użyć poprawnej klasy w oparciu o prawdziwość warunków warunkowych.
Twój obiekt powinien zawierać pary klucz / wartość. Klucz to nazwa klasy, która zostanie zastosowana, gdy wartość (warunkowa) będzie miała wartość 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>
Angular sprawdzi obiekt $scope.user
aby zobaczyć stan active
i numer level
. W zależności od wartości w tych zmiennych, Angular zastosuje pasujący styl do <span>
.
ngIf
ng-if
jest dyrektywą podobną do ng-show
ale wstawia lub usuwa element z DOM zamiast go po prostu ukrywać. Angular 1.1.5 wprowadził dyrektywę ng-If. Możesz użyć dyrektywy ng-if powyżej wersji 1.1.5. Jest to przydatne, ponieważ Angular nie będzie przetwarzał skrótów dla elementów wewnątrz usuniętego ng-if
zmniejszy to obciążenie Angular, szczególnie w przypadku złożonych powiązań danych.
W przeciwieństwie do ng-show
, dyrektywa ng-if
tworzy zakres potomny, który wykorzystuje dziedziczenie prototypowe. Oznacza to, że ustawienie pierwotnej wartości zakresu potomnego nie będzie miało zastosowania do elementu nadrzędnego. Aby ustawić operację podstawową w zakresie $parent
należy użyć właściwości $parent
w zakresie podrzędnym.
JavaScript
angular.module('MyApp', []);
angular.module('MyApp').controller('myController', ['$scope', '$window', function myController($scope, $window) {
$scope.currentUser= $window.localStorage.getItem('userName');
}]);
Widok
<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 Jeśli currentUser
nie jest niezdefiniowany
<div ng-controller="myController">
<div ng-if="currentUser">
Hello, {{currentUser}}
</div>
<!-- ng-if: !currentUser -->
</div>
DOM Jeśli currentUser
jest niezdefiniowany
<div ng-controller="myController">
<!-- ng-if: currentUser -->
<div ng-if="!currentUser">
<a href="/login">Log In</a>
<a href="/register">Register</a>
</div>
</div>
Obietnica funkcji
Dyrektywa ngIf akceptuje również funkcje, które logicznie wymagają zwrócenia wartości true lub false.
<div ng-if="myFunction()">
<span>Span text</span>
</div>
Tekst zakresu pojawi się tylko wtedy, gdy funkcja zwróci true.
$scope.myFunction = function() {
var result = false;
// Code to determine the boolean value of result
return result;
};
Jak każde wyrażenie kątowe funkcja akceptuje dowolny rodzaj zmiennych.
ngMouseenter i ngMouseleave
Dyrektywy ng-mouseenter
i ng-mouseleave
są przydatne do uruchamiania zdarzeń i stosowania stylów CSS po najechaniu kursorem na elementy DOM lub z nich.
Dyrektywa ng-mouseenter
uruchamia wyrażenie jedno zdarzenie enter myszy (gdy użytkownik wpisze wskaźnik myszy nad elementem DOM, w którym znajduje się ta dyrektywa)
HTML
<div ng-mouseenter="applyStyle = true" ng-class="{'active': applyStyle}">
W powyższym przykładzie, gdy użytkownik wskazuje kursorem myszy na div
, applyStyle
zmienia się na true
, co z kolei stosuje klasę .active
CSS w klasie ng-class
.
Dyrektywa ng-mouseleave
uruchamia wyrażenie jedno zdarzenie wyjściowe myszy (gdy użytkownik odbiera kursor myszy od elementu DOM, w którym znajduje się ta dyrektywa)
HTML
<div ng-mouseenter="applyStyle = true" ng-mouseleaver="applyStyle = false" ng-class="{'active': applyStyle}">
Ponownie wykorzystując pierwszy przykład, gdy użytkownik zabiera mu wskaźnik myszy od div, klasa .active
jest usuwana.
ngDisabled
Niniejsza dyrektywa jest przydatna do ograniczenia zdarzeń wejściowych w oparciu o pewne istniejące warunki.
Dyrektywa ng-disabled
przyjmuje i wyraża, które powinny być oceniane na wartości zgodne z prawdą lub fałszem.
ng-disabled
służy do warunkowego zastosowania atrybutu disabled
do elementu 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
jest oceniane na true, jeśli długość input
wynosi 0, co z kolei wyłącza przycisk, uniemożliwiając użytkownikowi uruchomienie zdarzenia kliknięcia przez kliknięcie ng-click
ngDblclick
Dyrektywa ng-dblclick
jest przydatna, gdy chcesz powiązać zdarzenie dwukrotnego kliknięcia z elementami DOM.
Niniejsza dyrektywa akceptuje wyrażenie
HTML
<input type="number" ng-model="num = num + 1" ng-init="num=0">
<button ng-dblclick="num++">Double click me</button>
W powyższym przykładzie wartość przechowywana na input
zostanie zwiększona po dwukrotnym kliknięciu przycisku.
Ściągawka wbudowanych dyrektyw
ng-app
Ustawia sekcję AngularJS.
ng-init
Ustawia domyślną wartość zmiennej.
ng-bind
Alternatywa dla szablonu {{}}.
ng-bind-template
Wiąże wiele wyrażeń z widokiem.
ng-non-bindable
że dane nie są wiążące.
ng-bind-html
Wiąże wewnętrzną właściwość HTML elementu HTML.
ng-change
Ocenia określone wyrażenie, gdy użytkownik zmienia dane wejściowe.
ng-checked
Ustawia pole wyboru.
ng-class
Ustawia klasę css dynamicznie.
ng-cloak
Zapobiega wyświetlaniu zawartości, dopóki AngularJS nie przejmie kontroli.
ng-click
Wykonuje metodę lub wyrażenie po kliknięciu elementu.
ng-controller
Dołącza klasę kontrolera do widoku.
ng-disabled
Kontroluje właściwość disabled elementu formularza
ng-form
Ustawia formularz
ng-href
Dynamicznie powiąż zmienne AngularJS z atrybutem href.
ng-include
Służy do pobierania, kompilowania i dołączania zewnętrznego fragmentu HTML do strony.
ng-if
Usuń lub odtwarza element w DOM w zależności od wyrażenia
ng-switch
Warunkowo przełącz sterowanie na podstawie dopasowanego wyrażenia.
ng-model
Powiązuje elementy wejściowe, zaznaczone, textarea itp. z właściwością modelu.
ng-readonly
Służy do ustawiania atrybutu readonly dla elementu.
ng-repeat
Służy do przewijania każdego elementu w kolekcji w celu utworzenia nowego szablonu.
ng-selected
Używany do ustawienia wybranej opcji w elemencie.
ng-show/ng-hide
Pokaż / Ukryj elementy na podstawie wyrażenia.
ng-src
Dynamicznie powiąż zmienne AngularJS z atrybutem src.
ng-submit
Powiąż wyrażenia kątowe z przesłanymi zdarzeniami.
ng-value
Powiąż wyrażenia kątowe z wartością.
ng-required
Powiąż wyrażenia kątowe z przesłanymi zdarzeniami.
ng-style
Ustawia ng-style
CSS na elemencie HTML.
ng-pattern
Dodaje walidator wzorca do ngModel.
ng-maxlength
Dodaje walidator maxlength do ngModel.
ng-minlength
Dodaje walidator minlength do ngModel.
ng-classeven
Działa w połączeniu z ngRepeat i działa tylko na nieparzystych (parzystych) wierszach.
ng-classodd
Działa w połączeniu z ngRepeat i działa tylko na nieparzyste (parzyste) wiersze.
ng-cut
Służy do określania niestandardowego zachowania w przypadku zdarzenia cut.
ng-copy
Służy do określania niestandardowego zachowania podczas kopiowania zdarzenia.
ng-paste
Służy do określania niestandardowego zachowania podczas wklejania zdarzenia.
ng-options
Służy do dynamicznego generowania listy elementów dla elementu.
ng-list
Służy do konwersji ciągu znaków na listę na podstawie określonego ogranicznika.
ng-open
Służy do ustawiania atrybutu open dla elementu, jeśli wyrażenie wewnątrz ngOpen jest prawdziwe.
ngClick
Dyrektywa ng-click
dołącza zdarzenie click do elementu DOM.
Dyrektywa ng-click
pozwala określić niestandardowe zachowanie po kliknięciu elementu DOM.
Jest to przydatne, gdy chcesz dołączyć zdarzenia kliknięcia do przycisków i obsłużyć je na kontrolerze.
Ta dyrektywa akceptuje wyrażenie z obiektem zdarzenia dostępnym jako $event
HTML
<input ng-click="onClick($event)">Click me</input>
Kontroler
.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>
Kontroler
...
$scope.count = function(){
$scope.count = $scope.count + 1;
}
...
Po kliknięciu przycisku wywołanie funkcji onClick
wyświetli „Zdarzenie powitania kliknięcia”, a następnie obiekt zdarzenia.
ngRequired
ng-required
dodaje lub usuwa required
atrybut sprawdzania poprawności na elemencie, co z kolei włącza i wyłącza require
klucz sprawdzania poprawności dla input
.
Służy do opcjonalnego określenia, czy element input
ma mieć niepustą wartość. Dyrektywa jest pomocna przy projektowaniu sprawdzania poprawności złożonych formularzy HTML.
HTML
<input type="checkbox" ng-model="someBooleanValue">
<input type="text" ng-model="username" ng-required="someBooleanValue">
Opcje modelu ng
ng-model-options
pozwala zmienić domyślne zachowanie ng-model
, ta dyrektywa pozwala rejestrować zdarzenia, które będą uruchamiane, gdy model ng zostanie zaktualizowany i dołączyć efekt debounce.
Niniejsza dyrektywa akceptuje wyrażenie, które będzie oceniać obiekt definicji lub odwołanie do wartości zakresu.
Przykład:
<input type="text" ng-model="myValue" ng-model-options="{'debounce': 500}">
Powyższy przykład dołącza efekt odrzucenia 500 milisekund do myValue
, co spowoduje, że model zaktualizuje się 500 ms po tym, jak użytkownik skończy pisać na input
(to znaczy, gdy myValue
zakończy aktualizację).
Dostępne właściwości obiektu
updateOn
: określa, które zdarzenie powinno być powiązane z wejściemng-model-options="{ updateOn: 'blur'}" // will update on blur
debounce
: określa opóźnienie o kilka milisekund w kierunku aktualizacji modelung-model-options="{'debounce': 500}" // will update the model after 1/2 second
allowInvalid
: flaga logiczna dopuszczająca niepoprawną wartość dla modelu, omijająca domyślne sprawdzanie poprawności formularza, domyślnie te wartości byłyby traktowane jakoundefined
.getterSetter
: flaga boolowska wskazująca, czy traktować modelng-model
jako funkcję getter / setter zamiast zwykłej wartości modelu. Następnie funkcja uruchomi się i zwróci wartość modelu.Przykład:
<input type="text" ng-model="myFunc" ng-model-options="{'getterSetter': true}"> $scope.myFunc = function() {return "value";}
timezone
: określa strefę czasową dla modelu, jeśli dane wejściowe dotycządate
lubtime
. typy
ngCloak
Dyrektywa
ngCloak
służy do zapobiegania wyświetlaniu szablonu Angular HTML w przeglądarce w jego nieprzetworzonej (nieskompilowanej) formie podczas ładowania aplikacji. - Zobacz źródło
HTML
<div ng-cloak>
<h1>Hello {{ name }}</h1>
</div>
ngCloak
można zastosować do elementu body, ale preferowanym zastosowaniem jest zastosowanie wielu dyrektyw ngCloak do małych części strony, aby umożliwić stopniowe renderowanie widoku przeglądarki.
Dyrektywa ngCloak
nie ma parametrów.
Zobacz także: Zapobieganie migotaniu
ngInclude
ng-include pozwala przekazać kontrolę nad jedną częścią strony do określonego kontrolera. Możesz to zrobić, ponieważ złożoność tego komponentu staje się taka, że chcesz zawrzeć całą logikę w dedykowanym kontrolerze.
Przykładem jest:
<div ng-include
src="'/gridview'"
ng-controller='gridController as gc'>
</div>
Zauważ, że /gridview
będzie musiał być obsługiwany przez serwer WWW jako odrębny i zgodny z prawami adres URL.
Zauważ też, że src
-attribute akceptuje wyrażenie kątowe. Może to być na przykład zmienna lub wywołanie funkcji lub, podobnie jak w tym przykładzie, stała ciągu. W takim przypadku należy upewnić się, że źródłowy adres URL jest zawinięty w pojedyncze cudzysłowy , aby został oceniony jako stała ciągu. Jest to powszechne źródło zamieszania.
W html /gridview
możesz odwoływać się do gridController
tak, jakby był zawinięty wokół strony, np .:
<div class="row">
<button type="button" class="btn btn-default" ng-click="gc.doSomething()"></button>
</div>
ngSrc
Używanie znaczników Angular, takich jak {{hash}}
w atrybucie src, nie działa poprawnie. Przeglądarka pobierze z adresu URL dosłowny tekst {{hash}}
dopóki Angular nie zastąpi wyrażenia w {{hash}}
. Dyrektywa ng-src
przesłania oryginalny atrybut src
dla elementu znacznika obrazu i rozwiązuje problem
<div ng-init="pic = 'pic_angular.jpg'">
<h1>Angular</h1>
<img ng-src="{{pic}}">
</div>
ngPattern
Dyrektywa ng-pattern
akceptuje wyrażenie, którego wynikiem jest wzorzec wyrażenia regularnego, i używa tego wzorca do sprawdzania poprawności tekstu.
Przykład:
Powiedzmy, że chcemy, aby element <input>
stał się prawidłowy, gdy jego wartość (model-ng) jest prawidłowym adresem IP.
Szablon:
<input type="text" ng-model="ipAddr" ng-pattern="ipRegex" name="ip" required>
Kontroler:
$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
Najczęściej używany w trybie ng-repeat
ngValue jest przydatny podczas dynamicznego generowania list przycisków opcji za pomocą 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
Dyrektywa ngCopy
określa zachowanie, które ma być uruchamiane w przypadku zdarzenia kopiowania.
Zapobiegaj kopiowaniu danych przez użytkownika
<p ng-copy="blockCopy($event)">This paragraph cannot be copied</p>
W kontrolerze
$scope.blockCopy = function(event) {
event.preventDefault();
console.log("Copying won't work");
}
ngPaste
Dyrektywa ngPaste
określa niestandardowe zachowanie, które ma być uruchamiane, gdy użytkownik wklei zawartość
<input ng-paste="paste=true" ng-init="paste=false" placeholder='paste here'>
pasted: {{paste}}
ngHref
ngHref jest używane zamiast atrybutu href, jeśli mamy wyrażenia kątowe wewnątrz wartości href. Dyrektywa ngHref przesłania oryginalny atrybut href znacznika HTML za pomocą atrybutu href, takiego jak tag, tag itp.
Dyrektywa ngHref zapewnia, że łącze nie zostanie zerwane, nawet jeśli użytkownik kliknie łącze, zanim AngularJS oceni kod.
Przykład 1
<div ng-init="linkValue = 'http://stackoverflow.com'">
<p>Go to <a ng-href="{{linkValue}}">{{linkValue}}</a>!</p>
</div>
Przykład 2 Ten przykład dynamicznie pobiera wartość href z pola wprowadzania i ładuje ją jako wartość href.
<input ng-model="value" />
<a id="link" ng-href="{{value}}">link</a>
Przykład 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
Dyrektywa ng-list
służy do konwertowania ograniczonego ciągu znaków z wprowadzania tekstu na tablicę ciągów i odwrotnie.
Dyrektywa ng-list
używa domyślnego ogranicznika ", "
(spacja).
Możesz ustawić separator ręcznie, przypisując separator ng-list
tak jak ten ng-list="; "
.
W takim przypadku ogranicznik jest ustawiony na średnik, po którym następuje spacja.
Domyślnie ng-list
ma atrybut ng-trim
który jest ustawiony na true. ng-trim
gdy false, uszanuje białe znaki w twoim ograniczniku. Domyślnie ng-list
nie bierze pod uwagę spacji, chyba że ustawisz ng-trim="false"
.
Przykład:
angular.module('test', [])
.controller('ngListExample', ['$scope', function($scope) {
$scope.list = ['angular', 'is', 'cool!'];
}]);
Ustawiony jest ogranicznik klienta ;
. Model pola wprowadzania jest ustawiony na tablicę utworzoną w zakresie.
<body ng-app="test" ng-controller="ngListExample">
<input ng-model="list" ng-list="; " ng-trim="false">
</body>
Pole wprowadzania wyświetli się z treścią: angular; is; cool!