2017-02-17 1 views
0

http://embed.plnkr.co/keaGc3Y4Pmgfs04HJgnC/ng changement ne fonctionne pas après le premier téléchargement

Voici le lien de mes code.I essaie de valider mon téléchargement en désactivant le bouton de données de charge lorsque le fichier est vide. Cela fonctionne pour la première fois, mais lorsque la prochaine fois que je télécharge le fichier, ng-change ne fonctionne pas et le bouton est toujours désactivé même si j'ai téléchargé le fichier suivant. Je suis un débutant dans AngularJS, donc je peux faire quelques erreurs de base.

+0

Essayez-vous toujours avec le même fichier? Parce que pour moi, ça fonctionne bien. Notez que ng-change ne se déclenchera pas si vous essayez de télécharger à nouveau le même fichier. (parce qu'il n'y a pas de changement) – Founded1898

+0

ya ... J'essaie de télécharger le même fichier, y at-il une solution de contournement? –

Répondre

0

Puisque vous essayez de télécharger le même fichier, l'événement onChange ne se déclenche pas, car il est le même fichier. Pour résoudre ce problème, vous devez désactiver le champ de saisie après avoir téléchargé le fichier. Malheureusement, vous devez utiliser jQuery (ou obtenir l'élément wit vanilla js) pour cela. Donc, dans votre fonction onFileLoad que vous pourriez faire quelque chose comme ceci:

angular.element("input[type='file']").val(null); // Unset Input 
$scope.filename = undefined; // Unset $scope property 

Notez que ce n'est pas la voie « angulaire » de le faire. Il serait préférable de déplacer ceci dans une directive, parce que vous ne devriez pas manipuler le DOM dans un contrôleur.

Mise à jour: Comme dit précédemment, vous devez inclure jQuery pour que cela fonctionne. JqLite d'Angular ne prend pas en charge la sélection des éléments DOM par ses type. Ainsi, soit vous incluez jQuery (doit être chargé avant angulaire!), Soit vous modifiez le code pour pouvoir utiliser vanSJS ou jqlite.

+0

Essayé de faire le fichier .... encore ng-change ne se déclenche pas .. –

+0

voir mise à jour Réponse – Founded1898

-1
Please change, initially 

vm.foo = 'Monthly' 

<input type="radio" name="{{item.deviceId}}" ng-model="renew.foo" ng-value="'Monthly'" ng-click="renew.updatePref(item, 'Monthly')">Monthly 
<input type="radio" name="{{item.deviceId}}" ng-model="renew.bar" ng-value="'Yearly'" ng-click="renew.updatePref(item, 'Yearly')">Yearly 
you have use ng-change, change event never happen as value for these input remains always same. use, 

var vm = this; 
you are also using ng-value="Monthly", Monthly is variable (undefiend) for ng-value. either use value="Monthly" or ng-value="'Monthly'". 
+0

s'il vous plaît élaborer (je pense que cette solution n'est pas pertinente pour ma question) –