Obecnie uczę się AngularJS i mam trudności ze zrozumieniem różnicy między ng-bind
i ng-model
.
Czy ktoś może mi powiedzieć, czym się różnią i kiedy należy stosować jeden nad drugim?
Obecnie uczę się AngularJS i mam trudności ze zrozumieniem różnicy między ng-bind
i ng-model
.
Czy ktoś może mi powiedzieć, czym się różnią i kiedy należy stosować jeden nad drugim?
ng-bind ma jednokierunkowe wiązanie danych ($ scope -> view). Ma skrót, {{ val }}
który wyświetla wartość zakresu $scope.val
wstawioną do html, gdzie val
jest nazwa zmiennej.
ng-model jest przeznaczony do umieszczania wewnątrz elementów formularza i ma dwukierunkowe wiązanie danych ($ scope -> view and view -> $ scope) np <input ng-model="val"/>
.
odpowiedź Tosha trafnie trafia w sedno pytania. Oto dodatkowe informacje ....
Filtry i formaty
ng-bind
ing-model
oba mają pojęcie przekształcania danych przed wysłaniem ich do użytkownika. W tym celung-bind
używa filtrów , podczas gdyng-model
używa formatów .filtruj (ng-bind)
Za
ng-bind
pomocą filtra możesz przekształcić swoje dane. Na przykład,<div ng-bind="mystring | uppercase"></div>
,lub prościej:
<div>{{mystring | uppercase}}</div>
Pamiętaj, że
uppercase
jest to wbudowany filtr kątowy , chociaż możesz również zbudować własny filtr .formatyzator (model ng)
Aby utworzyć formatyzator modelu ng, należy utworzyć dyrektywę, która to robi
require: 'ngModel'
, która pozwala tej dyrektywie uzyskać dostęp do ngModelacontroller
. Na przykład:Następnie w częściowym:
Jest to zasadniczo
ng-model
odpowiednik tego, co robiuppercase
filtr wng-bind
powyższym przykładzie.Parsery
Co teraz, jeśli planujesz zezwolić użytkownikowi na zmianę wartości
mystring
?ng-bind
ma tylko jedno wiązanie, od modelu -> widok . Jednakże,ng-model
może wiązać się z widzenia -> modelowe co oznacza, że może zezwolić użytkownikowi na zmianę danych modelki i za pomocą parsera można sformatować dane użytkownika w usprawniony sposób. Oto jak to wygląda:Graj z działką na żywo przykładów
ng-model
formatera / parseraCo jeszcze?
ng-model
ma również wbudowane sprawdzanie poprawności. Wystarczy zmodyfikować$parsers
lub$formatters
funkcję zadzwonić ngModel jestcontroller.$setValidity(validationErrorKey, isValid)
funkcja .Angular 1.3 ma nową tablicę $ validators, której można użyć do sprawdzania poprawności zamiast
$parsers
lub$formatters
.Angular 1.3 ma także obsługę getter / setter dla ngModel
źródło
ngModel
Dyrektywa ngModel wiąże dane wejściowe, select, textarea (lub formant niestandardowy) z właściwością w zakresie.Niniejsza dyrektywa obowiązuje na poziomie priorytetu 1.
Przykład plunker
JAVASCRIPT
CSS
HTML
ngModel odpowiada za:
ngBind
Atrybut ngBind mówi Angularowi, aby zastąpił treść tekstową określonego elementu HTML wartością danego wyrażenia i zaktualizował treść tekstową, gdy zmieni się wartość tego wyrażenia.Niniejsza dyrektywa wykonuje się na poziomie priorytetu 0.
Przykład plunker
JAVASCRIPT
HTML
ngBind odpowiada za:
źródło
Jeśli wahasz się przed użyciem
ng-bind
lubng-model
, spróbuj odpowiedzieć na następujące pytania:Tak:
ng-bind
(wiązanie w jedną stronę)Nie:
ng-model
(wiązanie dwustronne)Tak:
ng-bind
Nie:
ng-model
(nie należy używać ng-bind tam, gdzie wymagana jest wartość)Tak:
ng-model
(nie można używać ng-bind z<input>
tagiem)Nie:
ng-bind
źródło
model ng
Dyrektywa ng-model w AngularJS jest jedną z największych zalet wiązania zmiennych używanych w aplikacji ze składnikami wejściowymi. Działa to jako dwukierunkowe wiązanie danych. Jeśli chcesz lepiej zrozumieć powiązania dwukierunkowe, masz komponent wejściowy, a wartość zaktualizowana w tym polu musi zostać odzwierciedlona w innej części aplikacji. Lepszym rozwiązaniem jest powiązanie zmiennej z tym polem i wyprowadzenie tej zmiennej za każdym razem, gdy chcesz wyświetlić zaktualizowaną wartość w aplikacji.
ng-bind
ng-bind działa znacznie inaczej niż model ng. ng-bind to jeden ze sposobów powiązania danych służący do wyświetlania wartości w składniku HTML jako wewnętrzny HTML. Ta dyrektywa nie może być używana do wiązania ze zmienną, ale tylko z zawartością elementów HTML. W rzeczywistości można tego użyć wraz z ng-model do powiązania komponentu z elementami HTML. Ta dyrektywa jest bardzo przydatna do aktualizowania bloków takich jak div, span itp. Wewnętrzną zawartością HTML.
Ten przykład pomoże ci zrozumieć.
źródło
źródło
ngModel zwykle używa tagów wejściowych do wiązania zmiennej, którą możemy zmienić zmienną ze strony kontrolera i html, ale ngBind używa do wyświetlania zmiennej na stronie html i możemy zmieniać zmienną tylko z kontrolera i html, po prostu pokaż zmienną.
źródło
Możemy użyć ng-bind z
<p>
do wyświetlania, możemy użyć skrótu dong-bind {{model}}
, nie możemy użyć ng-bind z kontrolkami wejściowymi HTML, ale możemy użyć skrótung-bind {{model}}
z kontrolkami wejściowymi HTML.źródło