AngularJs directives - comment obtenir des valeurs d'attributs à partir de la directive
Aucune idée de comment accéder à des valeurs d'attributs à partir de l'intérieur de la directive?
angular.module('portal.directives', [])
.directive('languageFlag', ['$routeParams', function(params) {
return function(scope, element, attrs) {
console.log(attrs["data-key"]); //returns undefined
console.log(element.attr('data-key')); //returns {{data-key}}
angular.element(element).css('border', '1px solid red');
};
}]);
Code Html est:
<ul>
<li ng-repeat="lng in flags">
<a class="lngFlag {{flag.Key}}" data-key="{{flag.Key}}" data-id="{{lng.Id}}" ng-click="changeLangHash({'lng':lng.Id })" language-flag></a>
</li>
</ul>
Grâce
il suffit de suivre chameau cas dans le cas du tableau de bord -
OriginalL'auteur Ashraf Fayad | 2013-04-30
Vous devez vous connecter pour publier un commentaire.
Utilisation
$observe
:@FMM mentionné dans un commentaire,
data
est dépouillé par Angulaire au moment de normaliser le nom de l'attribut, d'où l'utilisation dekey
ci-dessus, plutôt que dedataKey
.Il est probable que angulaire est taillé la
data
préfixe (docs.angularjs.org/guide/directive): "Éventuellement, la directive peut être préfixé avec x-, ou de données - pour en faire le validateur HTML conforme." C'est probablement une mauvaise idée de commencer votre (logique) les noms d'attribut avec des "données".OriginalL'auteur Mark Rajcok
essayer
attrs["dataKey"]
- c'est la façon dont le code html analyse des attributs avec des tirets (-
).si vous voulez que la valeur du champ au lieu de
{{something}}
, vous pouvez faire deux choses:scope[attrs['dataKey']]
- va fonctionner, mais ne devrait pasou de l'utilisation
$parse
mais alors n'utilisez pas `{{}}`ou vous pouvez utiliser
$interpoler
de la même manière comme$parse
mais avec{{}}
En passant parent à l' $parse (ex:
$parse(attrs.uid)($scope.$parent)
) a résolu mon problèmeMais que faire si l'attribut est affectée de la valeur? Mon code ne l'analyser sur la directive de la charge, mais jamais d'avis que les modifications apportées à la variable (à partir de la portée parent).
OriginalL'auteur g00fy
angulaire des bandes de données "hors les attributs, donc si votre attribut "data-key", il suffit d'utiliser la touche", pas "dataKey'
Difficile à dire sans voir votre code. J'espère que vous avez pensé à elle depuis que vous avez demandé il y a 14 heures. Si non, vous devriez être en mesure de regarder les réponses sur cette page et essayer un couple de différentes choses, de les comprendre.
Merci pour votre réponse. Veuillez voir mon tag ci-dessous
<input type="button" value="Ok" id="" ng-click="getAttributejs($event)" class="" data-actiontype="kathir" />
Actuellement, je suis retraitdata-
de la balise. Je ne suis pas compris encore.vous pourriez poster une nouvelle question, je et tout le monde a vraiment besoin de voir votre angulaire de la directive de code. Ça risque de recevoir des réponses assez rapidement. Ou mettre en place un codepen/JSfiddler et de fournir ce lien
OriginalL'auteur Michael Tranchida
Je suggère l'utilisation d'object notation si vous êtes à l'intérieur de la fonction de lien de la directive, qui obtient le attrs paramètre:
attrs.yourAttributeName
OriginalL'auteur Mickey Puri