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.

Przykład roboczy

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.

Przykład działania JSBin

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>

PEŁNY PRZYKŁAD

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.

PEŁNY PRZYKŁAD


<!-- 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.

PEŁNY PRZYKŁAD


<!-- 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

PEŁNY PRZYKŁAD


<!-- 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

PEŁNY PRZYKŁAD


<!-- 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.

PEŁNY PRZYKŁAD


<!-- 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.

PEŁNY PRZYKŁAD


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>

Przykład roboczy

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.

Źródło (nieco edytowane)

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

  1. updateOn : określa, które zdarzenie powinno być powiązane z wejściem

    ng-model-options="{ updateOn: 'blur'}" // will update on blur
    
  2. debounce : określa opóźnienie o kilka milisekund w kierunku aktualizacji modelu

    ng-model-options="{'debounce': 500}" // will update the model after 1/2 second
    
  3. 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 jako undefined .

  4. getterSetter : flaga boolowska wskazująca, czy traktować model ng-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";}
    
  5. timezone : określa strefę czasową dla modelu, jeśli dane wejściowe dotyczą date lub time . 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>

Działa plnkr

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!



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow