Здравствуйте, мне нужна помощь. Я попытался создать директиву, которая следит за моделью поля ввода, если эта модель изменится, она должна проверять специальные символы, если они есть, модель получает синтаксический анализ, и она должна возвращать разобранную стоимость.Watch in Directive change Модель
Теперь все это прекрасно работает, значение поля ввода изменилось и является правильным, но кажется, что только значение изменилось, пока модель еще не была проанализирована.
Мои Html
<input type="text" name="bestellnummer" ng-model="we.bestellnummer" required parse/>
И Моя Директива
.directive('parse', function ($timeout, Ls, $window) {
return {
restrict: 'AE',
require: 'ngModel',
link: function (scope, element, attrs, ngModel) {
scope.$watch(attrs.ngModel, function (Val) {
//console.log(Val)
if (Val != undefined) {
if ((Val.toString()).indexOf('?') != -1 && (Val.toString()).indexOf('!') != -1) {
Val = Val.slice(0, -1);
scope.code = new Gs1Parser.Parse(Val);
//console.log(scope.code);
if (scope.code != undefined && scope.code[0].Key != 'invalid') {
var ParsedVal = scope.code[0].Key;
scope.code = undefined;
$window.Gs1Parser.returnedValue = [];
//try with ngModel
ngModel.$modelValue = ParsedVal;
//element[0].value = ParsedVal;
//scope.ab.abNr = ParsedVal;
} else if (scope.code[0].Key == 'invalid') {
Val = Val.slice(1);
//element[0].value = Val;
//scope.ab.abNr = Val;
}
}
}
})
}
}
})
Поэтому в основном пользователь вводит? 12345! Парсер меняет это на 345, и это должна быть новая модель. На данный момент значение равно 345, но как только я отправляю данные, отправляется modelvale (? 12345!).
Заранее спасибо
Почему вы не можете использовать ng-change? –
id предпочитает, чтобы он был в отдельной директиве, потому что у меня есть несколько независимых модулей и с ng-change мне пришлось бы взять эту логику в контроллер, но если у меня нет другого выбора, я думаю, что ng-change может быть возможностью – stackg91
Вы должны не изменяйте значение DOM, вместо этого измените модель. Требовать ngModel в директиве и изменить ее значение. –