'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(); }); } }; }]);