Bonjour,
Voila je rencontre un petit problème avec mon code. j'aimerais attacher un comportement de type ng-model a un input de type file
Décrivez ici votre code ou ce que vous cherchez à faire
Tous fonctionne parfaitement sur Firefiox / Opera/ Chrome mais pas IE9 bien sur .
.directive('fileModel', [ '$parse', function($parse) {
return {
restrict : 'A',
link : function(scope, element, attrs) {
var model = $parse(attrs.fileModel);
var modelSetter = model.assign;
element.bind('change', function() {
scope.$apply(function() {
modelSetter(scope, element[0].files[0]);
});
});
}
};
}
])
Sur IE j'ai toujours l'erreur $apply is already in progress . Même un essayant de faire un "safe" apply aucun changement si vous avez une piste je suis intéréssé merci. Je ne sais pas du tous d'ou vient le soucis puisque sa marche sur tous les autres navigateurs. il doit bien être possible de le faire sur IE9
Bon au final j'ai pas trouver de solutions donc uniquement pour IE j'ai transformer sa avec un upload standard javascript.
Essaye de mettre un $timeout de 200ms avant ton $apply :
.directive('fileModel', [ '$parse', '$timeout', function($parse, $timeout) {
return {
restrict : 'A',
link : function(scope, element, attrs) {
var model = $parse(attrs.fileModel);
var modelSetter = model.assign;
element.bind('change', function() {
$timeout(function () {
scope.$apply(function() {
modelSetter(scope, element[0].files[0]);
});
}, 200, false);
});
}
};
}
])