link: function ($scope, element, attrs, ngModel) { // if (element[0] && element[0].$touched) { ngModel.$asyncValidators.smCodeUnique = function (modelValue, viewValue) { if (!viewValue || _.isEmpty(modelValue.trim())) { return services.Q.when(true); } var deferred = services.Deferred; $log.info("Firing server-side validations for " + $scope.tableName + '.' + $scope.columnToTest); let codeObject = { id: $scope.primaryKey, tableName: $scope.tableName, columnToTest: $scope.columnToTest, code: viewValue }; return services.Http.put('api/items/checkCodeUniqueness', codeObject).then( function (response) { if (!response.data.isValid) { $scope.errorMessage = response.data.errorMessage; deferred.reject(response.data.errorMessage); } else { deferred.resolve(response.data); } return deferred.promise; } ); }; // } }