Css 动态更改AngularJS中指令的类?
我有很多电影,比如Netflix。每部电影都有许多标签:喜剧、恐怖等 当我点击一个标签时,视图会相应地被过滤,这非常有效。 但我还想做的是在所有标记中添加一个类,使用与单击的相同的名称(在其他每部电影中) 我可以在click事件中创建一个丑陋的jQuery:contains,但这感觉不对 我是一个AJS noob,但我相信有更好的AJS方式来实现这一点Css 动态更改AngularJS中指令的类?,css,angularjs,directive,Css,Angularjs,Directive,我有很多电影,比如Netflix。每部电影都有许多标签:喜剧、恐怖等 当我点击一个标签时,视图会相应地被过滤,这非常有效。 但我还想做的是在所有标记中添加一个类,使用与单击的相同的名称(在其他每部电影中) 我可以在click事件中创建一个丑陋的jQuery:contains,但这感觉不对 我是一个AJS noob,但我相信有更好的AJS方式来实现这一点 (function () { var directive = function () { return { restri
(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);
}());
(函数(){
var指令=函数(){
返回{
限制:“A”,
模板:“{{tag} ”,
链接:函数($scope,element,attrs){
元素绑定('click',函数(e){
var linkText=e.target.innerText;
如果($scope.$parent.category===linkText){
返回;
}
$scope.$parent.category=linkText;
$scope.$apply();
})
}
};
};
角度。模块('videoApp')
.指令(“视频标签”,指令);
}());
您应该在使用此指令的控制器和所选类别之间使用双向数据绑定。在控制器中,可以有一个selectedCategory
属性,如果selectedCategory
匹配,则可以为列表中的每部电影应用样式。那么对于指令:
return {
scope: {category: "=selectedCategory"}
我还建议使用
ng click
而不是element.bind
,但这不会改变功能。我仍然在使AJS的事情复杂化,解决方案非常简单。
只需将模板属性更改为:
template: '<li data-ng-class="{\'active\' : category === tag}" data-ng-repeat = "tag in movie.genre">{{tag}}</li>',
template:“{{{tag}} ”,
我没想到“tag”变量也能在其他指令中使用,但这太棒了!=)
现在,当一个标签被点击时,其他每一部有相同标签的电影也会被设置为类。由于双向数据绑定。我给了您投票支持,但我选择了另一种解决方案。