Я пытаюсь вызвать службу $ http изнутри часов в моей директиве.Предполагается, что директива помещается в более чем один элемент ввода.Если значение всех элементов изменяется вместе, часы запускаются спина к спине, и $ http также вызывается спина к спине, иногда путая ответ на каждый вызов $ http, то есть для последовательных вызовов $ http, даже если входные данные различныответ приходит тот же.Как правильно структурировать код для этого случая?Могу ли я использовать обещание, чтобы решить эту проблему.Если да, то как, учитывая, что это тот же самый вызов $ http, который вызывается с разными входами.
Utils.directive('setDescription', function ($q,$http,$timeout) {
var directive = {};
directive.priority = 1;
directive.restrict = 'A';
directive.require = 'ngModel';
directive.link = function(scope,element,attributes,ngModel) {
scope.isInput = false;
scope.getDescription = true;
scope.elementArray = [];
element.bind("keypress", function (event) {
scope.isInput = true;
return true;
});
scope.$watch(function(){
var codeElem = element.next();
if(codeElem[0]!=undefined){
codeElem=codeElem[0];
}
return scope.gettheObject(codeElem.name,scope);
},function(newValue,oldValue){
if(!scope.isInput && scope.getDescription){
if(newValue!=undefined && (newValue.trim())!=""){
$timeout(function() {
element.val(newValue);
scope.elementArray.push(element);
$http({
method: 'POST',
url: Constants.BASE_REST_URL + '/picklist/pickListResultGeneric',
data : CryptoHelperService.getEncryptedData(searchstr,true),
headers: CryptoHelperService.getEncryptionHeaders(),
cache: false,
xsrfCookieName : 'nicAccessCookie'
}).then(function(response) {
response.data = CryptoHelperService.getDecryptedResponse(response.data,response.headers);
});
});
}
}
});
}
return directive;
});