我正在使用 Videogular 作为视频播放器的现有 Angular 站点,并且我创建了两个新的自定义元素(一个包含文本的灰色条 DIV 和另一个包含徽标的 DIV)。这些新的 DIV 覆盖视频海报图像并随海报出现/消失。
我正在使用 Videogular 海报插件,并且它的自定义版本运行良好。图层正确显示/消失。
我需要传递两个新的变量/值:1)将插入到覆盖视频的图层中的文本变量和 2)第二张图像的 URL 变量(已经工作的第一张图像是海报图像本身)。
这是显示视频/海报的每个页面中的 HTML:
<div class="videogular" mixpanel-track="Video Played" mt-key="Video Name" data-mt-desc="Introduction" mt-video
box-init box-ratio="1.77">
<videogular vg-theme="videogular.theme">
<vg-media vg-src="[{src: sceService.trustAsResourceUrl('http://static.videogular.com/assets/videos/videogular.mp4'), type: 'video/mp4'}]"></vg-media>
<vg-controls vg-autohide="videogular.autoHide" vg-autohide-time="videogular.autoHideTime">
<vg-play-pause-button></vg-play-pause-button>
<vg-scrub-bar>
<vg-scrub-bar-current-time></vg-scrub-bar-current-time>
</vg-scrub-bar>
<vg-volume>
<vg-mute-button></vg-mute-button>
<vg-volume-bar></vg-volume-bar>
</vg-volume>
<vg-fullscreen-button></vg-fullscreen-button>
</vg-controls>
<vg-overlay-play></vg-overlay-play>
<vg-poster vg-url="'http://www.videogular.com/img/videogular.png'" vg-text="'this is text that will display in the grey bar overlaying video'" vg-url2="'http://www.videogular.com/img/videogular2.png'"></vg-poster>
</videogular>
</div>
请注意视频 (vg-src) 和海报图像 (vg-url) 的值是如何在 HTML 中定义的,而不是在外部 Videogular javascript 中定义的。
正如您在上面的 HTML 中所看到的,我需要为将出现在额外海报层之一中的文本添加第二个海报变量 (vg-text),并且我需要第三个海报变量 (vg-url2)应该出现在覆盖海报图像的两个新 DIV 之一中的图像。
下面我的自定义海报 JS 正确显示了海报图像和两个新的 DIV,但我需要为这些 DIV 中的内容传递值:
"use strict";
angular.module("com.2fdevs.videogular.plugins.poster", [])
.run(
["$templateCache", function ($templateCache) {
$templateCache.put("vg-templates/vg-poster",
'<img ng-src="{{vgUrl}}" ng-class="API.currentState">\
<div class="video-overlay-logo" ng-class="API.currentState">\
<img ng-src="{{vgUrl2}}">\
</div>\
<div class="video-overlay-bar" ng-class="API.currentState">\
<div ng-src="{{vgText}}" ng-class="API.currentState"> </div>\
</div>');
}]
)
.directive("vgPoster",
[function () {
return {
restrict: "E",
require: "^videogular",
scope: {
vgUrl: "=?"
},
templateUrl: function (elem, attrs) {
return attrs.vgTemplate || 'vg-templates/vg-poster';
},
link: function (scope, elem, attr, API) {
scope.API = API;
if (API.isConfig) {
scope.$watch("API.config",
function () {
if (scope.API.config) {
scope.vgUrl = scope.API.config.plugins.poster.url;
}
}
);
}
}
}
}]
);
如何设置我的自定义海报 JS,以便它在 JS 中的 ng-src="{{vgText}}" 和 HTML 中的 vg-text 之间创建绑定,就像 ng-src="{{vgUrl} } 在上面的 JS 中获取 HTML 中 vg-url 的值?另外,我需要为最终变量传递一个值,我在上面称为 {{vgUrl2}}。
非常感谢任何和所有的指针。