Angularjs - comment accéder à l'attribut de la directive dans le contrôleur
Je suis nouveau sur angularjs et je suis coincé dans l'accès aux attributs de directive dans le contrôleur.
Directive
<rating max-stars="5" url="url.json"></rating>
app.directive('rating', [function () {
return {
restrict: 'E',
scope: {
maxStars: '=',
url: '@'
},
link: function (scope, iElement, iAttrs) {
console.log(iAttrs.url); //works
}
contrôleur
app.controller('ratingController', ['$scope', '$attrs' , '$http','$routeParams',function ($scope,$attrs,$http,$routeParams) {
console.log($attrs.url); //shows undefined
}]);
Comment puis-je accéder à l'url de l'attribut dans le contrôleur?
source d'informationauteur Arun
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez associer un contrôleur avec une directive, vous pouvez utiliser la Définition de la Directive de l'Objet
controller
propriété (que ce soit en spécifiant le contrôleur en fonction ou en spécifiant le nom du contrôleur (dans ce cas, il peut être enregistré n'importe où dans votre module)).Lors de l'utilisation de deux voies de liaison de données via
=
la valeur de l'attribut ne doit pas être un littéral (parce que vous ne pouvez pas avoir les deux sens de la liaison de données à un littéral), mais une chaîne de caractères spécifiant le nom d'une propriété dans le champ d'application actuel.À l'aide de
<rating max-stars="5"...
avecscope: {maxStars: '='...
est faux.Vous hould utiliser
<rating max-stars="5"...
etscope: {maxStars: '@'...
ou
<rating max-stars="someProp"...
etscope: {maxStars: '='...
tandis que le cadre englobant possède une propriété nomméesomeProp
avec une valeur numérique (par exemple,$scope.someProp = 5;
).Que c'est. Si vous souhaitez avoir accès aux éléments des attributs sur un contrôleur, vous devez configurer un contrôleur de la directive.
(Vous pouvez, toutefois, utiliser un service partagé pour faire ces attributs disponibles pour un autre contrôleur, si c'est ce que vous voulez atteindre)
http://jsbin.com/xapawoka/1/edit
A pris votre code et fait un jsBin. Je ne peux pas voir les problèmes que ce soit, je suppose que c'est une simple faute de frappe quelque part dans votre code (peut-être la divagation des
[
support en haut de votre définition de la directive).Voici le code:
Et voici le résultat:
http://cl.ly/image/031V3W0u2L2w
ratingController
n'est pas associée à votre directive. Ainsi, il n'y a aucun élément qui peut contenir des attributs liés à ce contrôleur.Si vous avez besoin d'accéder à ces attributs, la
link
fonction de ce que vous avez besoin (comme vous l'avez déjà mentionné ci-dessus)Exactement ce que vous voulez atteindre?