AngularJS ngInclude Html5 视频没有被替换

AngularJS ngInclude Html5 Video doesn't get replaced

我的问题:包含视频源的 ng 不会替换视频。

我的页面有提要和预览,每次我点击提要中的 post,它的预览就会被注入 (ngInclude) 到预览区域。 它适用于 youtube 视频、图像和文本,但当它到达 html5 个视频时,相同的视频不断显示,而且页面中的源似乎没有被替换。

最奇怪的是,当我进入 chrome 调试器并检查元素时,我看到它的源被替换为不同的 url,但预览中的视频没有改变。

我什至尝试启用自动播放,当我移动 post 秒时,视频继续流畅播放。

相关代码位如下:

获得ngIncluded的预览:

<div ng-if="postInfo.Media.type == 'video'">
    <video name="media" width="582" height="582" controls autoplay>
        <source src="{{postInfo.Media.videoStandardResolution}}" type="video/mp4">
    </video>
</div>

主页包含位:

<div id="preview-panel">
    <ng-include src="htmlInclude"  onload="responsiveCalc()"/>
</div>

而在我的 javascript 中,当我在 Feed 中收到更改 post 的事件时,我只是重新初始化 $scope.htmlInclude

有人遇到过类似的事情吗?我应该以某种方式刷新视频源吗?如果是这样的话。

谢谢!

尝试在视频源标签中使用 ng-src 而不是 src

<source ng-src="{{postInfo.Media.videoStandardResolution}}" type="video/mp4">

这让 angular 知道 src 将被替换并获取结果

最终解决这个问题的方法是删除视频标签内的源标签并直接更改视频的 'src' 属性。

遇到这个:http://www.w3.org/html/wg/drafts/html/master/embedded-content.html#the-source-element 从那里很明显。

所以我的 html 现在看起来像这样:

<video name="media" width="582" height="582" controls autoplay src="{{postInfo.Media.videoStandardResolution}}">
    Your browser does not support the video tag.
</video>