html5 - Angular ng-show/ng-hide/ng-if 隐藏video标签,刷新瞬间显示bug
PHP中文网
PHP中文网 2017-04-17 12:58:40
[HTML讨论组]

使用Angular框架时,用ng-show/ng-hide/ng-if指令判断是否有视频链接,如果有则显示video标签,没有则隐藏,但是,当没有video被隐藏是,每次刷新瞬间都会显示然后再隐藏。不知道有没有人遇到跟我一样问题。
代码如下:

<p class="news-content" ng-if="news.video_url != ''">
      <video ng-src="{{ news.video_url }}" preload="auto" controls width="100%" webkit-playsinline></video>
</p>
PHP中文网
PHP中文网

认证0级讲师

全部回复(4)
PHPz

感谢上面各位的回答,发现还是不能把video标签放到模板中,不然刷新的时候总会一瞬间看到视频的控制按钮,
问题已经解决了,方法如下:
模板中html修改为:

<p class="news-content"  ng-bind-html="video_dom">
</p>

然后在controller中去生成dom结构

$scope.video_dom = '';
if (response.data.video_url) {
  $scope.video_dom = $sce.trustAsHtml('<video src="' + response.data.video_url + '" preload="auto" controls width="100%" webkit-playsinline></video>');
}
巴扎黑

先引入这段CSS,内容可以在angular文件当中的angular-csp.css找到

<style>
    [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
        display: none !important;
    }
</style>

然后加上这个指令ng-cloak

<p ng-cloak class="news-content" ng-if="news.video_url != ''">
      <video ng-src="{{ news.video_url }}" preload="auto" controls width="100%" webkit-playsinline></video>
</p>
巴扎黑

一点建议,你可以试试将ng-ifng-show替代,因为ng-if牵扯DOM的移除和添加,而ng-show则会让那个元素一直保持在文档中;如果你一定要使用ng-if的话,可以考虑使用动画将这个小缺陷弥补一下。

高洛峰

http://stackoverflow.com/a/31797313/2586541

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号