javascript - AngularJS 如何点击拇指并出现视频?

标签 javascript angularjs

This is my Responsive YouTube Player with Scrolling Thumbnail Playlist

这是我的代码

<div class="container">
            <!-- THE YOUTUBE PLAYER -->
            <div class="vid-container">
                <iframe id="vid_frame" ng-src="{{selectedVideo.url}}" frameborder="0" width="560" height="315"></iframe>
            </div>


            <!-- THE PLAYLIST -->
            <div class="vid-list-container">
                <div class="vid-list">

                    <div ng-repeat="video in youTubeVideos">
                        <div class="vid-item" ng-click="selectedVideo.url = video.url">
                            <div class="thumb"><img ng-src="//img.youtube.com/vi/{{video.img}}/0.jpg"></div>
                            <div class="desc">{{video.desc}}</div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

$scope.youTubeVideos = [
                {
                    url: '//youtube.com/embed/eg6kNoJmzkY?autoplay=1&rel=0&showinfo=0&autohide=1',
                    img: 'eg6kNoJmzkY',
                    desc: 'Jessica Hernandez & the Deltas - Dead Brains'
                },
                {
                    url: '//youtube.com/embed/_Tz7KROhuAw?autoplay=1&rel=0&showinfo=0&autohide=1',
                    img: '_Tz7KROhuAw',
                    desc: 'Barbatuques - CD Tum P&aacute; - Sambalel&ecirc;'
                },
            ];

            $scope.selectedVideo = {};

控制台出现错误: 错误:[$interpolate:interr] 无法插值:{{selectedVideo.url}} 错误:[$sce:insecurl] 阻止从 $sceDelegate 策略不允许的 URL 加载资源。网址:https://youtube.com/embed/eg6kNoJmzkY

我无法解决此错误,我还需要在 vid-container 中保留视频 #1

最佳答案

您的资源请求被 AngularJS 中的 $sceDelegateProvider 阻止。

The $sceDelegateProvider allows one to get/set the whitelists and blacklists used to ensure that the URLs used for sourcing AngularJS templates and other script-running URLs are safe

将 URL 添加到 $sceDelegateProvider 白名单中,您应该能够抓取视频

angular.module('myApp', []).config(function($sceDelegateProvider) {
    $sceDelegateProvider.resourceUrlWhitelist([
        'self',
        'https://youtube.com/embed/**'
    ]);
});
<小时/>

如何更改所选视频?

var app = angular.module('myApp', []);
app.controller('videoCntrl', ['$scope', '$http', function ($scope, $http) {

    $scope.changeVideo = function (video) {
        $scope.selectedVideo = $scope.videos[video];
    }

    $scope.videos = [{
        url: '//youtube.com/embed/eg6kNoJmzkY?autoplay=1&rel=0&showinfo=0&autohide=1',
        img: 'eg6kNoJmzkY',
        desc: 'Jessica Hernandez & the Deltas - Dead Brains'
    },
    {
        url: '//youtube.com/embed/_Tz7KROhuAw?autoplay=1&rel=0&showinfo=0&autohide=1',
        img: '_Tz7KROhuAw',
        desc: 'Barbatuques - CD Tum P&aacute; - Sambalel&ecirc;'
    }];

}]);

ng-click 属性添加到所需的触发器。像这样的东西:

<div ng-click="changeVideo(1)"></div>

最后,在 body 标记上添加 ng-controller 属性。

<body ng-controller="videoCntrl">

关于javascript - AngularJS 如何点击拇指并出现视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50845805/

相关文章:

javascript - Bing map ,如何缩放 map ?

javascript - d3.js 使用复选框进行过滤

javascript - 当 IFrame 中出现滚动条时调用函数

javascript - 如何避免 angularjs 选择中的空自动选项?

javascript - ngModel 第一次不触发 View 更新

javascript - d3 SVG 中的 Angular 指令

android - 如何在 Android 上实现 ionic io 推送通知

javascript - 使图像在较小的显示器上不以全分辨率加载

javascript - AngularJS - 登录成功后在页面之间导航(使用不同的 html 页面和 Controller )

javascript - 有没有一种方法可以使用 Angular 中的路线来自动滚动到 ng-repeat 中的数据