angular.module('syncthing.core') .directive('validDeviceid', function ($http) { return { require: 'ngModel', link: function (scope, elm, attrs, ctrl) { ctrl.$parsers.unshift(function (viewValue) { $http.get(urlbase + '/svc/deviceid?id=' + viewValue).success(function (resp) { if (resp.error) { ctrl.$setValidity('validDeviceid', false); } else { ctrl.$setValidity('validDeviceid', true); } }); //Prevents user from adding a duplicate ID if (scope.devices.hasOwnProperty(viewValue)) { ctrl.$setValidity('unique', false); } else { ctrl.$setValidity('unique', true); } return viewValue; }); } }; });