AngularJS在使用ng-show ng-hide时,我仍然看到这两个对象1ms
AngularJS I still see the two objects for 1ms while using ng-show ng-hide
我有类似的情况:如何在 AngularJS 中使用 ng-show 和 ng-hide 与按钮
我有一个播放/暂停按钮的地方。ng-show/hide工作,我唯一的问题是我仍然看到两个对象1ms
我像这样将它们一个接一个地放置:
<span ng-show="status() != 1">
<span class="fa fa-play" ng-click="play()"></span>
</span>
<span ng-hide="status() != 1">
<span class="fa fa-pause" ng-click="pause()"></span>
</span>
在这两个按钮(上一个/下一个)之前和之后还有另一个对象,当我在播放/暂停时快速单击时 - 有时我在切换它们显示/隐藏时看不到这两个对象(开关很快),但有时我确实看到暂停/播放按钮 1 毫秒,然后其中一个消失了。
这真的很困扰我,有人可以建议不同的写法吗?
如果你遇到 DOM 元素的闪烁问题,那么尽量减少 DOM 发生的变化。您只需使用 1 个跨度即可获得相同的结果,并对其进行较小的更改。
<span class="fa" ng-class="{'fa-pause':status() == 1,'fa-play':status() != 1}" ng-click="status() == 1 ? pause() : play()"></span>
DOM 中的更改通常源自父作用域,并沿树向下传播到所有子作用域。因此,在您的示例中,第一个<span>
被消化,然后是下一个同级。因此,在短时间内,一个<span>
被消化,而下一个兄弟姐妹仍在等待消化。
您可以通过使用 CSS 来控制可见性来简化 HTML 和 JS 代码。
.CSS
.playing .fa-play { display: none; }
.playing .fa-pause { display: inline; }
.stopped .fa-play { display: inline; }
.stopped .fa-pause { display: none; }
.HTML
<span ng-class="{playing:state()==1,stopped:state()!=1}">
<span class="fa fa-play" ng-click="play()"></span>
<span class="fa fa-pause" ng-click="pause()"></span>
</span>
尝试对两个按钮使用 ng-show,但将其中一个按钮的条件切换到 status() == 1
否则,您可以将两个按钮替换为一个按钮,并根据它所处的"模式"切换 CSS 类和单击处理程序
相关文章:
- 引用对象中的通用值
- jQuery匹配JSON对象的部分文本
- 节点导出返回一个空对象
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 全局变量和全局对象的属性之间有什么区别吗
- 比较从函数和生成的日期对象
- Javascript,访问一个主要对象模块模式中的每个对象
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 调整窗口大小时,可拖动的对象会出现在容器外部
- 如何使用javascript从主svg对象动态创建svg视图框
- 如何使用json将对象列表从java转换为javascript
- 序列化数据属性中对象的最可靠方法
- 如何访问声音管理器2创建的声音对象
- FabricJs-限制主对象内添加对象的移动区域
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 值对象在某个变量发生更改后发生更改
- 如何为json对象中的段发送array[]
- AngularJS在使用ng-show ng-hide时,我仍然看到这两个对象1ms