CoffeeScript de Référencement de nœuds DOM Angulaire expressions est rejetée
Ma principale question est simple :
J'ai des erreurs lors de manipulation du DOM dans les Contrôleurs ou les Directives toutefois, la fonctionnalité fonctionne parfaitement.
Error: [$parse:isecdom] Referencing DOM nodes in Angular expressions is disallowed! Expression: open()
Je voudrais ignorer ces erreurs, et d'obtenir la confirmation qu'il est sécuritaire de le faire, à partir d'un fonctionnalité point de vue ( pas une conception de point de vue )
Pour garder les choses simples, j'apprécierais une réponse simple à cette question sans remettre en question mon besoin de le faire.
Maintenant, si quelqu'un veux en discuter plus en détail, j'ai ce résumé :
https://gist.github.com/kosz/04f916a5725d85045be5 ( dépendances: anguleuse, jquery, jquery ui dialog )
avec le code, je suis actuellement confronté à ce comportement.
J'ai fait de mon mieux jusqu'à présent, pour se débarrasser de cette erreur, et basé sur ce que j'ai lu, et de la documentation, de manipulation du dom angulaire semble être encouragés dans les directives.
J'ai donc fait le code du travail avec une directive, cependant, ça en jette toujours l'erreur !?
Comme vous pouvez le voir je suis à l'aide de Jquery UI et montrant pour chaque élément de la liste, si l'utilisateur veut modifier. Je ne suis pas de manipuler directement les dom, cependant, j'ai besoin d'un moyen de contrôle de la fermer/ouvrir les événements de l'interface utilisateur de jQuery Dialogue, ce qui ne veut pas faire Angulaire de remplir ma console avec des erreurs.
Aucune indication sur ce qui est grandement apprécié.
Veuillez noter que je suis conscient de l'écart angulaire ui bootstrap modal, et ce n'est pas une option pour moi de l'utiliser dans ce scénario particulier.
- c'est le standard de l'erreur angulaire contre la manipulation dom: Erreur: [$parse:isecdom] Référencement des nœuds DOM Angulaire expressions est rejetée! Expression: open() . modifié la question d'inclure cette info
- Avez-vous essayé de les appeler, votre DOM-manipulation de la fonctionnalité dans une fonction (en dehors d'une expression)? Selon le documentation, cette vérification n'est effectuée sur l'objet de l'indice et des appels de fonction dans Angulaire expressions
- Avez-vous essayé de liaison / de la création de la portée.ouvrez à l'aide de l'ordinaire flèche
->
au lieu de la grosse flèche=>
?
Vous devez vous connecter pour publier un commentaire.
Que les états d'erreur, Angulaire interdit l'accès à nœuds DOM dans les expressions.
CoffeeScript utilise implicitement
return
si aucun n'est spécifié.Cela signifie que, par exemple, la
scope.open
fonction dans votre code:Angulaire va le détecter et de le jeter à l'erreur.
Si vous ajoutez un explicite
return
il faut résoudre le problème:Bien que l'on a accepté la réponse est juste que j'aimerais partager mon expérience de toute façon comme il s'est avéré être un problème différent. En fait j'ai eu le même problème mais je n'ai pas fait de retourner quoi que ce soit de ma fonction (et non pas à l'aide de CoffeeScript) donc j'ai été intrigué pour un peu et il a lutté pour trouver une solution.
Dans mon cas, le problème semble être que j'ai été en passant le nœud DOM comme un argument de la fonction comme ceci:
Ce qui s'est avéré être une solution ici était en train de changer le code mentionné à ne laisser passer que l'événement et pas le nœud directement:
Alors récupérer le nœud du contrôleur/directive/quelle que soit la sorte:
Se produit lorsqu'une expression tente d'accéder à un nœud DOM.
AngularJS restreint l'accès aux nœuds de l'intérieur expressions, puisque c'est un moyen d'exécuter du code Javascript arbitraire.
Cette vérification n'est effectuée sur l'objet de l'indice et des appels de fonction dans Angulaire expressions. Ce sont des endroits qui sont plus difficiles pour le développeur de garde. En pointillés de l'accès des membres (comme un.b.c) ne pas effectuer cette vérification, c'est au développeur de ne pas les exposer à de tels sensible et puissant des objets directement sur le champ d'application de la chaîne.
Pour résoudre cette erreur, d'éviter l'accès à des nœuds DOM.
La
$parse:isecdom
erreur se produit également lorsqu'un gestionnaire d'événement appelle une fonction qui retourne un nœud DOM.js:
Pour résoudre ce problème, évitez de retourner les nœuds DOM à partir de gestionnaires d'événements.
Remarque: Cette erreur signifie souvent que vous accédez à DOM à partir de vos contrôleurs, qui est généralement un signe de mauvais style de codage qui viole la séparation des préoccupations.
Rendement implicite en CoffeeScript
Cette erreur peut se produire plus fréquemment lors de l'utilisation de CoffeeScript, qui a une fonction appelée rendement implicite. Cette fonctionnalité du langage renvoie la dernière déréférencé objet dans la fonction lorsque la fonction n'a pas de retour explicite déclaration.
La solution à ce scénario est d'ajouter une explicite de l'instruction return. Pour
example return
faux à la fonction.Erreur: $parse:isecdom le Référencement d'un nœud DOM dans l'Expression