2017-02-20 1 views
0

Wenn der Benutzer die Ansicht eingibt. Angular sendet eine Anfrage an den Server und als Antwort ist ein Name, der aus einem Präfix und einem tatsächlichen Namen besteht (z.B. PREFIX_NAME). In Sicht habe ich 2 Eingänge (einen für Präfix und zweiten für Namen). Ich möchte ng-maxlength-Attribut für die Namenseingabe setzen, die zum Beispiel 25-prefix.length sein wird. Ich habe versucht, es so zu setzen:Hinzufügen von ng-maxlength zur Eingabe nach dem Laden von Daten

ng-maxlength="{{maxLength}}" 

aber es muss noch ersten Wert (25), nicht Wert nach Präfixlänge Substraktion.

+0

Mögliche Duplikat von [Dynamische ng-minlength/ng-maxlength] (http://stackoverflow.com/questions/35138274/dynamic-ng-min length-ng-maxlength) –

+0

Es gibt ein funktionierendes PLNKR in der akzeptierten Antwort –

Antwort

0

TLDR: verwenden ng-maxlength="maxLength"
ng-maxlength einen js Expression erwartet, nicht ein interpolierter Wert. Wenn Sie die Konsole öffnen, sollte wahrscheinlich ein Fehler angezeigt werden, der besagt, dass das unerwartete Token '{'. Im Allgemeinen benötigen Sie keine doppelten Klammern, wenn Sie ng-* verwenden.

+0

Wenn ich es ohne Interpolation mache, ist meine Eingabe ungültig und hat ein undefiniertes Modell. – DonLeo

+0

Haben Sie maxLength initialisiert? @DonLeo – Zen

+0

Ja, das tue ich. Am Anfang habe ich Initialisierung: maxLength = 25; Wenn ich eine Antwort bekomme, setze ich die maxLength Subtraktions-Präfixlänge. – DonLeo

0

Versuchen Sie, diese

ng-maxlength="maxLength" 
+0

Wenn ich es so mache, ist meine Eingabe ungültig und haben ein undefiniertes Modell. – DonLeo

+0

poste mehr Code mit dem Modell, von dem du sprichst –

0

sollte Ihre Eingabe sein:

<input ... ng-maxlength="maxLength"/> 

In Ihrem Controller, Standard maxLength gesetzt, und es ändern, wenn Sie es von Ihrem API erholt:

$scope.maxLength = 25; 

$http({ method: 'GET', url: '/url' }).then(function(data) { 
    $scope.maxLength = 25 - data; 
}); 
Verwandte Themen