【问题标题】:ng-show not showing after the condition changes to true条件更改为 true 后,ng-show 不显示
【发布时间】:2021-07-20 08:59:34
【问题描述】:

我的 HTML 中有一张图片和一段 YouTube 视频。当视频不播放时,我只想显示图像,而当视频播放时,我只想显示视频。
当页面打开时仅加载图像(如预期的那样)并且当单击播放按钮时图像消失但视频未显示。如果我删除视频元素的 ng-show 视频可以工作,但问题是当页面加载时它也会出现在图像中(它不应该)。 对于 YouTube 视频,我使用的是 angular-youtube-mb 1.3.2 版本。

HTML

    <div class="video-wrapper">
        <div class="video">
            <img ng-if="!homewelcomeVM.playing && !homewelcomeVM.paused" ng-src="ommited.jpg">
            {{homewelcomeVM.playing}}
            <youtube-video ng-show="homewelcomeVM.playing" video-url="homewelcomeVM.youtubeUrl" player="homePlayer" player-vars="playerVars" player-width="'100%'" player-height="'100%'"></youtube-video>
        </div>
    </div>
    <div class="blck-cnt animate-fade" ng-show="!homewelcomeVM.playing || homewelcomeVM.paused"> 
        <button type="button" class="play play-lg" hvm-analytics-clicks hvm-where-is="'home'" hvm-action="::'CLICK_PLAY_HOME_VIDEO'" ng-click="homePlayer.playVideo()"><i class="ic-svg ic-play-arrow ic-light ic-36"><svg><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#ic-play-arrow"></use></svg></i></i></button>
    </div>

按下播放按钮时,控制点 {{homewelcomeVM.playing}} 正确更新为 true。

控制器

        $scope.$on('youtube.player.playing', function ($event, player) {
            vm.playing = true;
            vm.paused = false;
        });

为什么当控制器变量更改为 true 时视频没有出现?

【问题讨论】:

    标签: javascript html angularjs


    【解决方案1】:

    您可以将div 添加为youtube-video 标记的父级,并将ng-show 用于div 标记:

    <div class="video-wrapper">
        <div class="video">
            <img ng-if="!homewelcomeVM.playing && !homewelcomeVM.paused" ng-src="ommited.jpg">
            {{homewelcomeVM.playing}}
            <div ng-show="homewelcomeVM.playing">
                <youtube-video  video-url="homewelcomeVM.youtubeUrl" player="homePlayer" player-vars="playerVars" player-width="'100%'" player-height="'100%'"></youtube-video>
            </div>
        </div>
    </div>
    <div class="blck-cnt animate-fade" ng-show="!homewelcomeVM.playing || homewelcomeVM.paused">
        <button type="button" class="play play-lg" hvm-analytics-clicks hvm-where-is="'home'" hvm-action="::'CLICK_PLAY_HOME_VIDEO'" ng-click="homePlayer.playVideo()"><i class="ic-svg ic-play-arrow ic-light ic-36"><svg><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#ic-play-arrow"></use></svg></i></i></button>
    </div>
    

    【讨论】:

    • 现在视频显示了,但是视频的高度很小,没有新的 div 就不会发生这种情况。
    • 你能做一个stackblitz.com 的样本吗?我认为你需要一些 CSS 类
    • 我已将 div 更改为 span,现在可以完美运行。我想知道为什么会这样
    • 恭喜!因为divblock显示,而span有inline显示
    猜你喜欢
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    • 1970-01-01
    • 1970-01-01
    • 2017-10-19
    相关资源
    最近更新 更多