2017-03-22 2 views
0

http://jsfiddle.net/ccLwj3us/erhält den Wert des Eingabetextes in einer Richtlinie (Angularjs)

Hallo. Das ist mein Code. Ich brauche den Wert des Eingabetextes, aber ich kann den Wert nur erhalten, wenn der Wert des Eingabetextes geändert wird. Wie kann man den Wert des Eingabetextes bekommen, ohne dass er geändert werden muss (zuerst den Wert des Eingabetextes erhalten)

Ich möchte etwas sehr generisches machen, das ich in jedem Controller wiederverwenden kann. Habe eine bestimmte Anzahl von Feldern und validiere sie, damit ich nicht immer den Wert der Variablen "number" bekommen möchte.

Ich möchte diese Richtlinie auf jedem Controller wiederverwenden. Ich werde nicht immer die Variable $ scope.numero haben. Wie kann ich den Wert des Textfelds erhalten, ohne scope.numero in der Direktive zu schreiben?

var app = angular.module('app', []); 

    app.controller('appCtrl', function ($scope) { 
    $scope.numero=100500 
    }); 

    app.directive('validate', function() { 

     return { 
      restrict: 'AE', 
      require: 'ngModel', 

      link: function (scope, element, attrs, ngModel) { 
      if (!ngModel){ 
       return;   
      } 

      ngModel.$parsers.push(function(val){ 
       if ((val>10) && (val<20)){ 
       element.removeClass("wrong"); 
       element.addClass("correct"); 
       } else { 
       element.removeClass("correct"); 
       element.addClass("wrong"); 
       } 
       ngModel.$render(); 
      }) 


      } 
     }; 
    }); 
+0

Sie möchten den Wert von Numero in Ihrer Anweisung erhalten, wenn Sie sie initialisieren? –

+0

@ Pramod_Para Ja, ich brauche diesen Wert aber in der Direktive für die Überprüfung zu überprüfen, um Fehler zuzuweisen | korrekte Klasse – yavg

+0

@ Pramod_Para Ich möchte etwas sehr generisches machen, das ich in jedem Controller wiederverwenden kann. Haben Sie eine bestimmte Anzahl von Feldern und validieren Sie sie, damit ich nicht immer den Wert der Variablen "number" erhalten möchte. – yavg

Antwort

1

Die Daten, die Sie benötigen, ist bereits in der ngModel, so können Sie es mit ngModel.$modelValue abrufen.

(Im Allgemeinen ist es bei der Verwendung von Angular am besten, sich aus der Gewohnheit herauszulösen, Daten aus dem DOM zu lesen - das DOM ist eine Nebenwirkungsdarstellung der Scope-Daten; die Richtlinie muss die Daten nicht lesen aus dem Eingabefeld "weil das Eingabefeld mit Daten ausgefüllt wurde, die bereits in der Direktive enthalten sind!"

+0

danke man, aber das Ergebnis von ngModel. $ ModelValue ist NaN .. jsfiddle.net/0tsvue0L – yavg

+0

Sie versuchen, auf die Daten zuzugreifen, bevor es die Direktive erreicht. Wickeln Sie diesen Alarm in ein '$ Timeout '(um zu erzwingen, dass er bis zum nächsten' $ digest' wartet) und Sie sehen den korrekten Wert: http://jsfiddle.net/tL4b13o6/ –

Verwandte Themen