【发布时间】:2016-08-22 17:15:35
【问题描述】:
我有一个Words 列表,由*ngFor 根据hidden 属性显示或隐藏。
请查看plunker。
问题是当列表中有大量单词时,很难找到新单词出现的位置。所以我想强调它们。
我的想法是默认设置一个.highlight类,并在添加项目后将其删除,平滑transition:
HTML
<div
*ngFor="let item of words | shownWords"
[ngClass]="{'item':true, 'highlihted': item.hidden}">
{{item.value}}
</div>
CSS
.item {
background-color: #ffffff;
transition: background .3s ease-out;
-moz-transition: background .3s ease-out;
-webkit-transition: background .3s ease-out;
-o-transition: background .3s ease-out;
}
.item.highlihted {
background-color: #ea90aa;
}
很遗憾这不起作用,因为已经创建了没有.highlight 类的新项目。
那么,问题来了:如何检测何时添加了新项目以及究竟添加了哪个项目?甚至可能吗?或者可能有另一种方法来实现我想要的?
P。 S. 如果我附加了不正确的 plunker 或我的问题有其他问题,请告诉我。
解决方案
首先抱歉描述不完整,我忘了说我想在一段时间后关闭高光。
请查看@Boyan Kostadinov 的回答,然后返回此处获取最终解决方案,final plunker:
新toggleHidden():
toggleHidden(item:Word) {
item.hidden= !item.hidden;
if (!item.hidden) {
item.highlihted = true;
setTimeout(() => {
item.highlihted = false;
}, 500);
}
}
【问题讨论】:
-
通过“如何检测何时添加了新项目以及添加了哪些项目?”你的意思是点击了哪个项目来显示?您有即将在“toggleHidden”函数中显示的项目,在“if (!item.hidden)”下,您可以使用 console.log(item) 输出它。我猜我不明白你想做什么。
标签: css angular typescript ngfor