7
votes

Angularjs: appliquer des directives à toutes les balises correspondantes

J'ai un grand formulaire Web que j'ai construit (plus de 100 champs) et je souhaite ajouter Angularjs pour permettre aux utilisateurs de saisir le formulaire et d'exécuter JavaScript pour stocker le modèle angulaire dans une base de données. Il est clair que je ne veux pas envoyer de données à la base de données à chaque fois que l'utilisateur modifie une infime pièce de données, de sorte que je souhaite utiliser la directive Options de modèle pour dire angulaire de tirer uniquement sur une updateon après 500ms ou plus.

Je ne veux vraiment pas appliquer une énorme quantité d'angulaire à chaque tag dans mon HTML, c'est beaucoup de taper, et si je veux jamais changer quelque chose, c'est beaucoup d'endroits à suivre et à mettre à jour manuellement. Ce que j'aimerais vraiment faire, c'est quelque chose comme $ ("entrée"). SetDirective () ou somesuch chose s'il existait. Je me rends compte que je pense que je pense à cela d'une manière de type JQuery, alors je suis intéressé à entendre la manière «appropriée» de manière angulaire d'appliquer le même ensemble de directives à chaque élément de mon DOM qui correspond à un sélecteur.

Merci!


0 commentaires

3 Réponses :


1
votes

Vous pouvez simplement créer une directive pour étiquette comme suit: xxx

démo: http://jsfiddle.net/zjdscakc/


3 commentaires

Et pour éviter un appel inutile, utilisez une propriété d'objet comme modèle NG, comme celui-ci: NG-Model = "Storage [Nom de terrain]". Ajoutez une surveillante sur le stockage de votre contrôleur et si les données ont changé, définissez le changeFlag sur true. Dans votre SETTITimeOUT - Si vous souhaitez utiliser un -, vérifiez si un changement ajoute et, s'il est vrai, lancez votre requête XHR et réinitialisez le changeFlag :) de cette façon, vous allez appeler le serveur uniquement en cas de besoin.


C'est génial, il me montre comment "sélectionner" toutes les balises ; Mais je ne vois toujours pas comment ajouter une directive à ce tag. Disons que je souhaite ajouter ng-modèle = attributs.name.name à la totalité des balises , comment puis-je ajouter ce ng-modèle Directive à la balise maintenant que je l'ai sélectionnée?


Je ne sais pas si cela est possible ... Mais vous avez accès à l'élément d'entrée (deuxième argument dans lien Fonction), où vous pouvez ajouter l'écouteur d'événements pour Onchange événement ( élément.on ("Modifier", fonction () {...}); ) et faites votre travail sans reliures de données ...



4
votes

Peu de modification à @bodzio Réponse

html fort> p> xxx pré>

js strong> p>

var app = angular.module('app', []);

app.directive('input', function() {
  return {
      restrict: 'E',
      link: function (scope, element, attributes) {
          // filter the element using attributes
          if (attributes.type === "text" && attributes.name) {
              element[0].value = "It works!";
          }
      }
  };
});


2 commentaires

C'est génial, il me montre comment "sélectionner" toutes les balises ; Mais je ne vois toujours pas comment ajouter une directive à ce tag. Disons que je souhaite ajouter ng-modèle = attributs.name.name à la totalité des balises , comment puis-je ajouter ce ng-modèle Directive à la balise maintenant que je l'ai sélectionnée?


Si votre problème est résolu, pouvez-vous le marquer comme une réponse :) Ou laissez-moi savoir le problème que vous rencontrez.



0
votes

J'ai pensé qu'il y avait une question similaire posée, je ne savais tout simplement pas comment la chercher: Ajouter des directives de la directive en angularjs . En utilisant cela comme mon modèle, j'ai compris comment appliquer de nouvelles directives à tout contenant une directive personnalisée. Je n'ai pas pu comprendre comment l'appliquer à toutes les balises directement, mais ajoutez une directive Saveme à tous mes 'T prendre trop de temps. ;)


0 commentaires