Je souhaite créer une directive qui affiche l'info-bulle (from AngularJs Bootstrap UI) en fonction de l'utilisateur autorisé ou non.AngularJs Directive pour info-bulle
Il fait bien le travail et ajouter les attributs requis tooltip
et tooltip-position
mais l'info-bulle ne se présente pas.
Si je compare l'élément généré par mon code et l'élément qui a une info-bulle comme html normal, son identique, sauf class="ng-scope"
, l'ajout de cette classe manuellement n'aide pas.
Voici mon code de directive:
proGamersApp.directive('registered', ['$rootScope', 'authService', function ($rootScope, authService) {
return {
restrict: 'A',
scope: true,
link: function ($scope, element, attrs) {
element.addClass('faded');
$rootScope.$watch('user.role', function (role) {
$scope.$apply(function() {
var accessLevel = routingConfig.accessLevels[attrs.accessLevel];
if (!authService.authorize(accessLevel)) {
element.attr('tooltip-placement', 'bottom');
element.attr('tooltip', 'Avaiable for registered users.');
} else
element.attr('tooltip-placement', 'bottom');
element.attr('tooltip', 'Avaiable for registered users.');
});
});
}
};
}]);
Toute idée qui que ce soit?
Mise à jour 3 supprimé la «$compile(element)
puisqu'il dit sa fonction non définie, et changé l'utilisation de la fonction $ appliquer. toujours obtenir l'erreur '$ digest déjà en cours'.
Code:
proGamersApp.directive('registered', ['$rootScope', 'authService', function ($rootScope, authService, $compile) {
return {
restrict: 'A',
scope: true,
link: function ($scope, element, attrs) {
element.addClass('faded');
$rootScope.$watch('user.role', function (role) {
var accessLevel = routingConfig.accessLevels[attrs.accessLevel];
if (!authService.authorize(accessLevel)) {
element.attr('tooltip-placement', 'bottom');
element.attr('tooltip', 'Avaiable for registered users.');
} else {
element.attr('tooltip', 'Avaiable for registered users.');
}
$scope.$apply(element);
});
}
};
}]);
Essayez de 'compiler $()' votre élément. – AlwaysALearner
Je ne sais pas si je l'ai fait correctement, mais je l'ai ajouté (voir mise à jour) et rien n'a changé. –
Je l'ai ajouté comme il se doit, jetez un oeil à la publication mise à jour. –