'use strict'; Application.Directives.directive('bsJasnyFileinput', [function(){ return { require : ['ngModel'], link : function($scope, elm, attrs, requiredCtrls){ var ngModelCtrl = requiredCtrls[0]; var fileinput = elm.parents('[data-provides=fileinput]'); var filetypeRegex = attrs.bsJasnyFileinput; fileinput.on('clear.bs.fileinput', function(e){ if(ngModelCtrl){ ngModelCtrl.$setViewValue(null); ngModelCtrl.$setPristine(); $scope.$apply(); } }); fileinput.on('change.bs.fileinput', function(e, files){ if(ngModelCtrl){ if(files){ ngModelCtrl.$setViewValue(files.result); } else { ngModelCtrl.$setPristine(); } // TODO: ne marche pas pour filetype if (filetypeRegex) { if(files && typeof files.type !== "undefined" && files.type.match(new RegExp(filetypeRegex))) ngModelCtrl.$setValidity('filetype', true); else ngModelCtrl.$setValidity('filetype', false); }; } $scope.$apply(); }); } } }]);