Ich lerne gerade AngularJS und habe Schwierigkeiten, den Unterschied zwischen ng-bind
und zu verstehen ng-model
.
Kann mir jemand sagen, wie sie sich unterscheiden und wann eines über das andere verwendet werden sollte?
Ich lerne gerade AngularJS und habe Schwierigkeiten, den Unterschied zwischen ng-bind
und zu verstehen ng-model
.
Kann mir jemand sagen, wie sie sich unterscheiden und wann eines über das andere verwendet werden sollte?
ng-bind verfügt über eine Einweg-Datenbindung ($ scope -> view). Es gibt eine Verknüpfung, {{ val }}
die den $scope.val
in HTML eingefügten Bereichswert anzeigt, wobei val
es sich um einen Variablennamen handelt.
ng-model soll in Formularelemente eingefügt werden und verfügt über eine bidirektionale Datenbindung ($ scope -> view und view -> $ scope), z <input ng-model="val"/>
.
Die Antwort von tosh bringt die Frage auf den Punkt . Hier einige zusätzliche Informationen ....
Filter & Formatierer
ng-bind
undng-model
beide haben das Konzept, Daten zu transformieren, bevor sie für den Benutzer ausgegeben werden. Zu diesem Zweckng-bind
verwendet Filter , währendng-model
Anwendungen Formatierer .Filter (ng-bind)
Mit
ng-bind
können Sie einen Filter verwenden, um Ihre Daten zu transformieren. Zum Beispiel,<div ng-bind="mystring | uppercase"></div>
,oder einfacher:
<div>{{mystring | uppercase}}</div>
Beachten Sie, dass dies
uppercase
ein integrierter Winkelfilter ist. Sie können jedoch auch einen eigenen Filter erstellen .Formatierer (ng-Modell)
Um einen ng-Modellformatierer zu erstellen, erstellen Sie eine entsprechende Direktive,
require: 'ngModel'
mit der diese Direktive auf ngModels zugreifen kanncontroller
. Zum Beispiel:Dann in Ihrem Teil:
Dies entspricht im Wesentlichen dem,
ng-model
was deruppercase
Filter imng-bind
obigen Beispiel tut .Parser
Was ist nun, wenn Sie dem Benutzer erlauben möchten, den Wert von zu ändern
mystring
?ng-bind
hat nur eine Einwegbindung aus Modell -> Sicht . Jedochng-model
binden kann aus Sicht -> Modell was bedeutet , dass Sie dem Benutzer ermöglichen , kann das Modell der Daten zu ändern, und mit Hilfe eines Parsers Sie die Daten in einer Weise rationalisiert des Benutzers formatieren. So sieht das aus:Spielen Sie mit einem Live-Plunker der
ng-model
Formatierer / Parser-BeispieleWas sonst?
ng-model
hat auch eine integrierte Validierung. Einfach ändern Sie Ihre$parsers
oder$formatters
Funktion aufzurufen ngModel ‚s -controller.$setValidity(validationErrorKey, isValid)
Funktion .Angular 1.3 verfügt über ein neues $ validators-Array, das Sie anstelle von
$parsers
oderzur Validierung verwenden können$formatters
.Angular 1.3 bietet auch Getter / Setter-Unterstützung für ngModel
quelle
ngModel
Die ngModel-Direktive bindet einen Eingabe-, Auswahl-, Textbereich (oder ein benutzerdefiniertes Formularsteuerelement) an eine Eigenschaft im Bereich.Diese Anweisung wird auf Prioritätsstufe 1 ausgeführt.
Beispiel Plunker
JAVASCRIPT
CSS
HTML
ngModel ist verantwortlich für:
ngBind
Das ngBind-Attribut weist Angular an, den Textinhalt des angegebenen HTML-Elements durch den Wert eines bestimmten Ausdrucks zu ersetzen und den Textinhalt zu aktualisieren, wenn sich der Wert dieses Ausdrucks ändert.Diese Anweisung wird auf Prioritätsstufe 0 ausgeführt.
Beispiel Plunker
JAVASCRIPT
HTML
ngBind ist verantwortlich für:
quelle
Wenn Sie zwischen
ng-bind
oder zögernng-model
, versuchen Sie, die folgenden Fragen zu beantworten:Ja:
ng-bind
(Einwegbindung)Nein:
ng-model
(bidirektionale Bindung)Ja:
ng-bind
Nein:
ng-model
(Sie sollten ng-bind nicht verwenden, wenn ein Wert erforderlich ist.)Ja:
ng-model
(Sie können ng-bind nicht mit<input>
Tag verwenden.)Nein:
ng-bind
quelle
ng-Modell
Die ng-Modell-Direktive in AngularJS ist eine der größten Stärken, um die in der Anwendung verwendeten Variablen mit Eingabekomponenten zu verbinden. Dies funktioniert als bidirektionale Datenbindung. Wenn Sie die bidirektionalen Bindungen besser verstehen möchten, verfügen Sie über eine Eingabekomponente, und der in diesem Feld aktualisierte Wert muss in einem anderen Teil der Anwendung wiedergegeben werden. Die bessere Lösung besteht darin, eine Variable an dieses Feld zu binden und diese Variable dort auszugeben, wo Sie den aktualisierten Wert über die Anwendung anzeigen möchten.
ng-bind
ng-bind funktioniert ganz anders als ng-model. ng-bind ist eine Einweg-Datenbindung, mit der der Wert in der HTML-Komponente als inneres HTML angezeigt wird. Diese Anweisung kann nicht zum Binden mit der Variablen verwendet werden, sondern nur mit dem Inhalt der HTML-Elemente. Tatsächlich kann dies zusammen mit ng-model verwendet werden, um die Komponente an HTML-Elemente zu binden. Diese Anweisung ist sehr nützlich, um die Blöcke wie div, span usw. mit innerem HTML-Inhalt zu aktualisieren.
Dieses Beispiel würde Ihnen helfen, zu verstehen.
quelle
quelle
ngModel wird normalerweise für Eingabe-Tags zum Binden einer Variablen verwendet, die wir von Controller und HTML-Seite ändern können, aber ngBind wird zum Anzeigen einer Variablen auf HTML-Seite verwendet, und wir können Variablen nur von Controller ändern, und HTML zeigt nur Variable an.
quelle
Wir können ng-bind with
<p>
zum Anzeigen verwenden, wir können Verknüpfungen für verwendenng-bind {{model}}
, wir können ng-bind nicht für HTML-Eingabesteuerelemente verwenden, aber wir können Verknüpfungen fürng-bind {{model}}
HTML-Eingabesteuerelemente verwenden.quelle