我想创建一个指令,根据用户是否授权显示工具提示(来自 AngularJs Bootstrap UI )。
它做得很好并添加了所需的属性tooltip
,tooltip-position
但工具提示没有显示。
如果我将我的代码生成的元素和具有工具提示的元素与普通 html 进行比较,则其相同 except class="ng-scope"
,手动添加此类无济于事。
这是我的指令代码:
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.');
});
});
}
};
}]);
有人知道吗?
更新 3
删除了 ',$compile(element)
因为它表示它的未定义函数,并更改了 $apply 函数的使用。仍然收到“$digest 已经在进行中”错误。
新代码:
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);
});
}
};
}]);