Я работаю над директивой angular, которая реализует синтаксический анализатор для проверки текущего ввода, нажимая на сервер, сервер возвращает статус в true/false, который я должен использовать для:
- Сделать модель недействительной
- Установите значение модели на «неопределенное», если оно недействительно
Я выполнил 1. выше, используя $setValidity, но имею проблему в 2. потому что мне нужно использовать статус, возвращаемый сервером функции $parser, но поскольку я должен ждать ответа сервера, оператор return внутри обратного вызова бесполезно.
app.directive('testDir', ['$resource',function($resource){
return{
restrict:'A',
require:'ngModel',
scope:{},
link:function(scope,element, attr,ngModel){
ngModel.$parsers.push(function (inputValue) {
var req=$resource('data.json');
var modelval='123';
req.get({},function(result){
ngModel.$setValidity('id',result.status);
//ngModel.$setViewValue(result.name);
console.log(result.name);
modelval=result.status?inputValue:undefined;
return modelval; // this doesn't work
});
return modelval; // executes before reading the JSON so always '123'
});
}
};
Я чувствую, что мне не хватает некоторых очень простых JS, поскольку мы не можем вернуться изнутри функции к внешней функции, но не смогли найти решение.
Любая помощь приветствуется!