css - 在 AngularJS 中动态更改指令的类?

标签 css angularjs directive

我有很多电影,比如 Netflix。每部电影都有许多标签:喜剧、恐怖等。

当我点击一个标签时, View 会相应地进行过滤,效果很好。 但我还想做的是为所有标签添加一个类,与点击的标签具有相同的名称(在所有其他电影上)。

我可以做一个丑陋的 jQuery :contains 在点击事件中,但感觉不对。

我是 AJS 菜鸟,但我确定有更好的 AJS 方法来实现这一点?

(function () {
var directive = function () {
    return {
        restrict: 'A',
        template: '<li data-ng-repeat = "tag in movie.genre">{{tag}}</li>',
        link    : function ($scope, element, attrs) {
            element.bind('click', function (e) {
                var linkText = e.target.innerText;

                if ($scope.$parent.category === linkText) {
                    return;
                }

                $scope.$parent.category = linkText;
                $scope.$apply();
            })
        }
    };
};

angular.module('videoApp')
    .directive('videoTags', directive);
}());

最佳答案

您应该在使用此指令的 Controller 和所选类别之间使用双向数据绑定(bind)。在 Controller 中,您可以拥有一个 selectedCategory 属性,如果 selectedCategory 匹配,您可以为列表中的每部电影应用样式。然后对于指令:

return {
    scope: {category: "=selectedCategory"}

我还建议使用 ng-click 而不是 element.bind 但这不应改变功能。

关于css - 在 AngularJS 中动态更改指令的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26718246/

相关文章:

c - #if 为预处理器指令定义字符串比较

javascript - AngularJS,使用复选框更改模型值

css - 如何在 SVG 中为特定部分制作透明颜色代码

html - Angular CSS 行悬停文本更改

javascript - 为什么我在所附代码中没有得到相同的输出 3 次?

javascript - 如何使用ip地址绘制来源国和目的国之间的交互?

javascript - Angular $scope 对象未在 View 中更新

javascript - 为 Typescript 中的 Angular Directive(指令)错误键入服务对象

css - html5 数据列表不同的选项有不同的颜色

html - 如何使 HTML 中的链接在悬停时变成颜色并使用 CSS 删除下划线?