gpt4 book ai didi

javascript - 如何删除 limitTo 过滤器对鼠标悬停事件的限制?

转载 作者:行者123 更新时间:2023-11-29 16:35:02 24 4
gpt4 key购买 nike

我有一个名为 articles 的对象数组,每个对象都包含一个名为 category 的字符串数组。每篇文章在 DOM 中都用一个 ngRepeat 指令表示,其中包含第二个 ngRepeat 指令来表示每个类别。第二个 ngRepeat 有一个 limitTo 过滤器,将类别数量限制为 2。当用户将鼠标悬停在基本 article 元素上时,限制应为已删除,并且 category 数组中的所有字符串都应该可见。

我的问题是,当用户将鼠标悬停在一个元素上时,articles 数组中每个对象的完整类别数组都会显示出来。如何让 DOM 只显示发生鼠标事件的元素的完整类别?

Plunkr: https://plnkr.co/edit/PW51BBnQEv589rIdnaCK?p=preview

最佳答案

您可以传递您将鼠标悬停在其上并在 scope 变量中设置的文章。而不是简单地将您的 ng-if 检查更新为:

ng-if="hoverMode === true && hoveredArticle === article"

工作示例:

// Code goes here

angular
.module('myApp', [])
.controller('myController', ($scope) => {

$scope.articles = [ { date: 'some', category: [ {name: "Sports"}, {name: "News"}, {name: "Cinema"} ] }, { date: 'some', category: [ {name: "A"}, {name: "B"}, {name: "C"} ] }, { date: 'some', category: [ {name: "D"}, {name: "E"}, {name: "F"} ] } ]

$scope.hoverMode = false;

$scope.showAllcat = function(article) {
$scope.hoveredArticle = article;
$scope.hoverMode = true;
}

$scope.hideAllcat = function() {
$scope.hoveredArticle = null;
console.log('hover working');
$scope.hoverMode = false;
}



});
<!DOCTYPE html>
<html ng-app='myApp'>

<head>
<script data-require="<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="61000f06140d00134f0b1221554f514f51" rel="noreferrer noopener nofollow">[email protected]</a>" data-semver="4.0.0" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.10/angular.min.js"></script>
<script data-require="<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c7a6a9a0b2aba6b5e9adb487f3e9f7e9f7" rel="noreferrer noopener nofollow">[email protected]</a>" data-semver="4.0.0" src="script.ts"></script>
<script data-require="<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="07666960726b6675296d74473329372937" rel="noreferrer noopener nofollow">[email protected]</a>" data-semver="4.0.0" src="system.config.js"></script>
<script data-require="<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2849464f5d44495a06425b681c06180618" rel="noreferrer noopener nofollow">[email protected]</a>" data-semver="4.0.0" src="tsconfig.json"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>

<body ng-controller='myController'>
<table>
<tbody>
<tr>
<th>Date</th>
<th>Categories</th>
</tr>
<tr ng-repeat="article in articles">
<td><span>{{ article.date }}</span></td>
<td ng-if="hoverMode === false || hoveredArticle !== article">
<span ng-repeat="cat in article.category | limitTo: 2">&nbsp;
<span class="label label-warning"
ng-mouseover="showAllcat(article)">{{ cat.name}}
</span>
</span>
</td>
<td ng-if="hoverMode === true && hoveredArticle === article">
<span ng-repeat="cat in article.category">&nbsp;
<span class="label label-warning"
ng-mouseleave="hideAllcat()">{{ cat.name}}
</span>
</span>
</td>
</tr>


</tbody>
</table>
</body>

</html>

关于javascript - 如何删除 limitTo 过滤器对鼠标悬停事件的限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52083956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com