So greifen Sie auf den $ ngModelController innerhalb des Controllers ohne Formular und ohne Direktive zu
Vielleicht ist es ein Anfängerfehler, aber ich kann anscheinend nicht auf die zugreifen$scope.model
's$ngModelController
damit ich das packen kann$viewValue
davon.
Ich habe eine Eingabe ohne Formular (ich benutze die UI-Mask Direktive):
<input type="text" ng-model="inicio" name="inicio" ui-mask="99/99/9999">
// inside my controller
$scope.inicio = dateFilter((new Date).getTime(), 'dd/MM/yyyy');
ui-mask legt für $ modelValue einen anderen Wert als $ viewValue fest, wodurch es schwierig wird, formatierte Daten an den Server zu senden. Wenn der$scope.inicio
Modelländerungen, der Wert ist ein Datum ohne Schrägstriche, wie z01012014
. Ich muss also in der Lage sein, den Controller für diesen Eingang zu erhalten, aber ohne ihn in eine Form zu packen und zu verwenden$scope.myForm.inicio.$viewValue
. Es MUSS möglich sein ...
Dinge, von denen ich weiß, dass ich sie tun kann, die aber hackig erscheinen, muss es einen einfacheren Weg geben:
Platzieren Sie das Element in einem Formular und greifen Sie darauf zu$scope.myForm.input.$viewValue
Holen Sie sich die Elementdaten mit jQuery$('input[name="inicio"]').data('$ngModelController');
Holen Sie sich das Element mitangular.element('input[name="inicio"]').controller('ngModel');
Erstellen Sie eine Direktive, fügen Sie sie in die Eingabe ein und aktualisieren Sie mein Bereichsmodell damitapp.directive('viewValue', function(){
return {
priority: 10,
require: 'ngModel',
link: function(scope, element, attrs, controller){
scope.$watch(attrs.viewValue, function(newValue, oldValue){
if (newValue !== oldValue){
scope[attrs.viewValue] = controller.$viewValue;
}
});
}
}
});
<input type="text" ui-mask="99/99/9999" ng-model="inicio" view-value="inicio">