Może to błąd debiutanta, ale nie mogę uzyskać dostępu do $scope.model
$ngModelController
, więc mogę pobrać z niego $viewValue
.
mam wejście bez formy (im przy dyrektywę ui-maska):
<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 maska ustawić $ modelValue inną wartość niż $ viewValue, utrudniając wysyłać sformatowane dane na serwer. Kiedy zmienia się model $scope.inicio
, wartością jest data bez ukośników, na przykład 01012014
. Muszę więc mieć możliwość uzyskania kontrolera dla tego wejścia, ale bez konieczności zawijania go w formularzu i używania $scope.myForm.inicio.$viewValue
. Musi być możliwe ...
Co wiem, że mogę zrobić, ale wydaje się hacky, musi być prostszy sposób:
- Umieścić element wewnątrz formularza i do niego dostęp za pośrednictwem
$scope.myForm.input.$viewValue
- Get dane elementu jQuery
$('input[name="inicio"]').data('$ngModelController');
- Get element używając
angular.element('input[name="inicio"]').controller('ngModel');
- Tworzenie dyrektywę, umieścić go na wejściu i zaktualizować mojego modelu zakres z nim
app.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">
Dlaczego umieszczanie elementu wewnątrz znacznika formularza jest zjadliwe? – Stewie
Nie potrzebuję formularza, tylko dane wejściowe, nie ma sensu, aby musiałem użyć dwóch modeli, dla jednej "prostej" rzeczy, to jest uzyskać dostęp do 'ngModelController' na tym elemencie, a także mając dane wejściowe bez Formularz jest idealnie cienki. – pocesar