Jak uzyskać dostęp do kontrolera $ ngModel z kontrolera bez formularza i bez dyrektywy
Może to nowicjusz, ale nie mogę uzyskać dostępu do$scope.model
jest$ngModelController
więc mogę złapać$viewValue
z tego.
Mam dane wejściowe bez formularza (im using ui-mask Directive):
<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');
maska-ui ustawia wartość $ modelValue na inną wartość niż $ viewValue, co utrudnia wysłanie sformatowanych danych na serwer. Kiedy$scope.inicio
model zmienia się, wartość jest datą bez ukośników, jak01012014
. Muszę więc mieć kontroler dla tego wejścia, ale bez konieczności zawijania go w formę i używania$scope.myForm.inicio.$viewValue
. To musi być możliwe ...
Rzeczy, które wiem, że mogę zrobić, ale wydają się hacky, muszą być prostsze:
Umieść element w formularzu i przejdź przez niego$scope.myForm.input.$viewValue
Pobierz dane elementu za pomocą jQuery$('input[name="inicio"]').data('$ngModelController');
Użyj elementuangular.element('input[name="inicio"]').controller('ngModel');
Utwórz dyrektywę, umieść ją na wejściu i zaktualizuj za jej pomocą mój model zasięguapp.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">