Rob*_*ock 78 angularjs angularjs-directive
我无法弄清楚如何在嵌套指令上更改类.
这是外部ng重复
<div data-courseoverview data-ng-repeat="course in courses | orderBy:sortOrder | filter:search"
data-ng-controller ="CourseItemController"
data-ng-class="{ selected: isSelected }">
Run Code Online (Sandbox Code Playgroud)
下面是使用另一个指令的内部ng-repeat
<li data-ng-repeat="item in social" class="social-{{item.name}}" ng-mouseover="hoverItem(true);"
ng-mouseout="hoverItem(false);"
index="{{$index}}"><i class="{{item.icon}}"
box="course-{{$index}}"></i></li>
Run Code Online (Sandbox Code Playgroud)
这是指令我正在调用悬停事件
ecourseApp.directive("courseoverview", function() {
return {
restrict : 'A',
replace: true,
/*scope: {
index: '@'
},*/
transclude: true,
templateUrl: "views/course-overview.html",
link: function link(scope, element, attrs) {
scope.switched = false;
//hover handler
scope.hoverItem = function(hovered){
if (hovered) {
element.addClass('hover');
$('#course-0 figure').addClass('tint')
}
else
element.removeClass('hover');
};
}
}});
Run Code Online (Sandbox Code Playgroud)
这需要 $('#course-0 figure').addClass('tint')更改调用项.
谢谢
Bjø*_*gil 148
一般来说,我完全同意Jason使用css选择器,但在某些情况下你可能不想更改css,例如在使用第三方css模板时,而更喜欢在元素上添加/删除类.
以下示例显示了在ng-mouseenter/mouseleave上添加/删除类的简单方法:
<div ng-app>
<div
class="italic"
ng-class="{red: hover}"
ng-init="hover = false"
ng-mouseenter="hover = true"
ng-mouseleave="hover = false">
Test 1 2 3.
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
有一些造型:
.red {
background-color: red;
}
.italic {
font-style: italic;
color: black;
}
Run Code Online (Sandbox Code Playgroud)
请参阅此处运行示例:jsfiddle示例
悬停时的样式是一个观点问题.虽然上面的解决方案在当前范围中设置了"悬停"属性,但控制器不需要关心这一点.
War*_*lin 39
我过去遇到了IE和css:hover选择器的问题,所以我采用的方法是使用自定义指令.
.directive('hoverClass', function () {
return {
restrict: 'A',
scope: {
hoverClass: '@'
},
link: function (scope, element) {
element.on('mouseenter', function() {
element.addClass(scope.hoverClass);
});
element.on('mouseleave', function() {
element.removeClass(scope.hoverClass);
});
}
};
})
Run Code Online (Sandbox Code Playgroud)
然后在元素本身上,您可以添加带有您希望在鼠标位于元素上时启用的类名的指令,例如:
<li data-ng-repeat="item in social" hover-class="hover tint" class="social-{{item.name}}" ng-mouseover="hoverItem(true);" ng-mouseout="hoverItem(false);"
index="{{$index}}"><i class="{{item.icon}}"
box="course-{{$index}}"></i></li>
Run Code Online (Sandbox Code Playgroud)
当鼠标悬停在元素上时,这应该添加类悬停和色调,并且不存在范围变量名称冲突的风险.我还没有测试过但是mouseenter和mouseleave事件仍然应该冒泡到包含元素,所以在给定的场景中,以下应该仍然有效
<div hover-class="hover" data-courseoverview data-ng-repeat="course in courses | orderBy:sortOrder | filter:search"
data-ng-controller ="CourseItemController"
data-ng-class="{ selected: isSelected }">
Run Code Online (Sandbox Code Playgroud)
当然,提供li是父div的子女
Tjo*_*rie 15
这是我的方案的解决方案:
<div class="btn-group btn-group-justified">
<a class="btn btn-default" ng-class="{'btn-success': hover.left, 'btn-danger': hover.right}" ng-click="setMatch(-1)" role="button" ng-mouseenter="hover.left = true;" ng-mouseleave="hover.left = false;">
<i class="fa fa-thumbs-o-up fa-5x pull-left" ng-class="{'fa-rotate-90': !hover.left && !hover.right, 'fa-flip-vertical': hover.right}"></i>
{{ song.name }}
</a>
<a class="btn btn-default" ng-class="{'btn-success': hover.right, 'btn-danger': hover.left}" ng-click="setMatch(1)" role="button" ng-mouseenter="hover.right = true;" ng-mouseleave="hover.right = false;">
<i class="fa fa-thumbs-o-up fa-5x pull-right" ng-class="{'fa-rotate-270': !hover.left && !hover.right, 'fa-flip-vertical': hover.left}"></i>
{{ match.name }}
</a>
</div>
Run Code Online (Sandbox Code Playgroud)
默认状态:

在悬停时:

我认为放一个anchor标签要容易得多i.你可以使用css :hover选择器.运动较少的部件使维护更容易,加载更少的javascript使页面更快.
这样就可以了:
<style>
a.icon-link:hover {
background-color: pink;
}
</style>
<a href="#" class="icon-link" id="course-0"><i class="icon-thumbsup"></id></a>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
103021 次 |
| 最近记录: |