Zugriff auf den $ ngModelController vom Controller ohne Formular und ohne Direktive

8

Vielleicht ist es ein Anfängerfehler, aber ich kann nicht auf die $scope.model s $ngModelController zugreifen, so dass ich die $viewValue daraus entnehmen kann.

Ich habe eine Eingabe ohne ein Formular (ich benutze die ui-mask Anweisung):

%Vor% %Vor%

ui-mask setzt den $ modelValue auf einen anderen Wert als $ viewValue, wodurch es schwierig wird, formatierte Daten an den Server zu senden. Wenn sich das $scope.inicio -Modell ändert, ist der Wert ein Datum ohne Schrägstriche wie 01012014 . Also muss ich in der Lage sein, den Controller für diesen Input zu bekommen, aber ohne ihn in ein Formular zu packen, und muss $scope.myForm.inicio.$viewValue verwenden. Es muss möglich sein ...

Dinge, die ich weiß, kann ich tun, aber scheint hacky, es muss einen einfacheren Weg geben:

  • Versetzen Sie das Element in ein Formular und greifen Sie darauf über $scope.myForm.input.$viewValue zu.
  • Erhalte die Elementdaten mit jQuery $('input[name="inicio"]').data('$ngModelController');
  • Erhalte das Element mit angular.element('input[name="inicio"]').controller('ngModel');
  • Erstelle eine Direktive, lege sie in die Eingabe und aktualisiere mein Scope-Modell damit
%Vor% %Vor%     
pocesar 14.06.2013, 20:25
quelle

1 Antwort

4

Ich mag die Richtlinienalternative. Im Wesentlichen tut die ui-mask -Direktive nicht, was Sie wollen, also können Sie auch Ihre eigene Direktive schreiben.

Sie sollten inicio nicht an Ihre view-value -Direktive übergeben müssen. Fügen Sie stattdessen Ihren eigenen Parser zu ngModelCtrl.$parsers hinzu. Hier ist ein Beispiel: Ссылка

    
Mark Rajcok 14.06.2013, 21:26
quelle