我想在调用各种Angular UI指令时向元素添加活动类。例如,当我调用popover时,我想突出显示元素(在case is a button中)。我知道我可以添加带表达式的ng-click,但我想要一个更强大的解决方案。
我不确定如何修改directive(s)所以我能够获取目标元素并切换类。我创造了一个小提琴,我希望有人可以帮助这个。
我感谢帮助人员,谢谢。
答案 0 :(得分:7)
Angular不会限制您定义与ui-bootstrap中名称相同的指令。这并不意味着你覆盖它们(尽管你可以),你只需要加以应用它们。只要您不破坏其原始功能,您就可以执行以下操作:
app.directive("popover", function () {
return {
restrict: 'EA',
priority: -1000, // Run last
link: function (scope, element) {
element.addClass("my-popover");
scope.$watch('tt_isOpen', function (value) {
if (value) {
element.addClass("open");
} else {
element.removeClass("open");
}
});
}
};
});
app.directive("tooltip", function () {
return {
restrict: 'EA',
priority: -1000, // Run last
link: function (scope, element) {
element.addClass("my-tooltip");
scope.$watch('tt_isOpen', function (value) {
if (value) {
element.addClass("open");
} else {
element.removeClass("open");
}
});
}
};
});
然后定义样式:
.my-popover.open {
background-color: red;
}
.my-tooltip.open {
font-style:italic;
color: orange;
}
不幸的是,您有点依赖于原始的实现细节(本地tt_isOpen
来自)。
查看here。