使用 AngularJS 指令嵌入 Vimeo 视频

2024-03-10

我在 AngularJS 应用程序中有一个部分 HTML 页面,我正在尝试向其中添加 vimeo 视频。该模板有一个图像和播放按钮,单击时会淡出以显示底层 iFrame。我还想要这个点击触发器来播放视频,这样就不必按两个播放按钮。

我的部分页面模板中发生这种情况的 div网站的工作版本在这里 http://bengal.missouri.edu/~wjg2q2/100_ages/app/#/100_Ages/1:

<div id="container" >

    <div id="dummy"></div>
    <div id="element">

    <iframe id="player" class="fade {{playerFade}}" ng-src="http://player.vimeo.com/video/{{person.video}}?api=1&amp;player_id=player&amp;wmode=opaque" frameborder="0" allowfullscreen></iframe>

    <img id="person_photo" class="fade {{person_photoFade}}" ng-src="{{person.photo_small}}" ng-src-responsive="[ [ '(min-width: 720px)', '{{person.photo_medium}}' ], [ '(min-width: 960px)', '{{person.photo_large}}' ], [ '(min-width: 1200px)', '{{person.photo_extralarge}}' ] ]" />

    <a id="playButton" ng-click="playing=true"  class="fade {{playButtonFade}}" ><img src="img/furniture/play.png" class="img_play" alt="play button"/></a>
    </div>

</div>

现在,我确实让它工作过一次,但那是在静态、非 Angular 网页上。我用来与 Vimeo API 交互的代码是从 SO#8444240 中获取的。他们试图找出预加载的方法。由于我有很多视频,我对此不感兴趣,我只是使用此代码来让我的按钮与我的视频进行交互。

我尝试将此脚本放入我的 index.html 页面中,但由于它已从 Angular 中删除,因此它根本不起作用。我想我需要一个指示。这是我当前的脚本代码:

<script>  

 //INIT Vimeo API

var vimeoPlayers = document.querySelectorAll('#player'),
    player;

for (var i = 0, length = vimeoPlayers.length; i < length; i++) {
    player = vimeoPlayers[i];
    $f(player).addEvent('ready', ready);
}

function addEvent(element, eventName, callback) {
    if (element.addEventListener) {
        element.addEventListener(eventName, callback, false);
    } else {
        element.attachEvent(eventName, callback, false);
    }
}

function ready(player_id) {
    // Keep a reference to Froogaloop for this player
    var container = document.getElementById(player_id).parentNode.parentNode, 
        froogaloop = $f(player_id);

    $('#playButton a').click(function(){

        $('#person_photo').fadeOut('12000');
        froogaloop.api('play');

        return false;   

    });                

}

</script>

我有一个控制播放按钮使其淡出的指令(感谢wmluke关于上一个问题 https://stackoverflow.com/questions/17205596/controller-doesnt-work-after-url-change)但我不知道如何将此 javascript 转换为指令。这也是我的控制器。

function DetailCtrl($scope, $routeParams, $http) {
  $http.get('person.json').success(function(data) {
    angular.forEach(data, function(person) {
          if (person.id == $routeParams.personId) 
            $scope.person = person;
        });
    });

  $scope.playing = false;

  // Update the *Fade scope attributes whenever the `playing` scope attribute changes
  $scope.$watch('playing', function (playing) {
        $scope.playerFade = playing ? 'in' : '';
        $scope.person_photoFade = playing ? '' : 'in';
        $scope.playButtonFade = playing ? '' : 'in';
  });

我尝试尽我所能编写此指令,但我不知道如何处理对 Vimeo API 的就绪调用。 Angular 似乎有更好的方法来做到这一点。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 AngularJS 指令嵌入 Vimeo 视频 的相关文章

随机推荐

  • AWS with .NET - 从 CloudWatch 读取日志 - 没有返回日志数据

    我正在尝试使用 NET 从 CloudWatch 读取使用 SNS 发送的消息的日志数据 从 CloudWatch 控制台 CloudWatch CloudWatch Logs Logs Insights 我输入 Date range cu
  • unity3d中的屏幕录制

    unity如何进行屏幕录制 我想在运行游戏时录制屏幕 游戏玩法 那应该是 play stop replay 从设备本地保存录音 从我的设备打开 加载 我们已经录制了 在我的游戏中 一台可以捕获本机相机的相机和一台 3D 模型 我希望记录两者
  • 原则 2 没有要处理的元数据类

    我已经将 zf 1 与原则 2 集成 我通过以下方式创建了实体 phpology php orm convert mapping force from database 注释 C wamp www ip application models
  • 存储星期几和时间?

    我有一个关于在数据库中存储星期几和时间的两部分问题 我正在使用 Rails 4 0 Ruby 2 0 0 和 Postgres 我有某些活动 并且这些活动都有时间表 例如 对于 跳伞 活动 我可能会在周二 周三和下午 3 点进行 有没有办法
  • SSDT 项目中带有 UDF 和视图的数据库参考

    遇到一个奇怪的问题 假设一个空解决方案中有两个数据库项目 Bart 和 Homer 巴特已被添加为荷马的数据库参考 Bart项目定义了一个函数 CREATE FUNCTION dbo Message RETURNS NVARCHAR 255
  • Git 分离头问题

    我今天读了很多与此问题相关的帖子 这里有一篇有用的帖子 修复 Git 分离头 https stackoverflow com questions 10228760 how to fix a git detached head 为什么我的 G
  • 如何在 Bootstrap 4 中将卡片居中?

    我正在使用 bootstrap 4 alpha 3 我想将卡片水平居中在页面中间 Preview link http codepen io vaibhavsingh97 full VjRAXW http codepen io vaibhav
  • 获取 BorderPane 中中心空间的宽度和高度 (JavaFX 2)

    我有一个简单的BorderPane实例是我的根节点Scene 边框窗格的右侧有一个面板 带有一些 GUI 控件 包括一个按钮 当我单击此按钮时 我创建了一个类的实例 Foo 延伸StackPane我把这个实例作为边框窗格的中心节点 我想获取
  • 检查小部件级别的错误和其他值 - 可能使用自定义表单字段

    如果某个字段在小部件级别出现错误 我该如何访问 使用默认值我尝试过 if widget attributes has errors or if widget has errors 但不工作 我使用自定义小部件模板 我正在考虑使用自定义表单字
  • .htaccess 中的条件 SetEnv?

    是否可以根据主机名在 htaccess 文件中设置不同的 SetEnv 变量 例如 我需要我的 htaccess文件具有以下值 SetEnv PYRO ENV production 在生产盒上 以及 SetEnv PYRO ENV stag
  • PHP $_SERVER[‘SERVER_ADDR’] 变量始终返回 127.0.0.1

    我们有多个负载平衡的 Web 服务器机器运行相同的 PHP Web 应用程序 LAMP http en wikipedia org wiki LAMP software bundle 并且我想在每个服务器上运行稍微不同的代码 用于测试目的
  • Ajax post serialize() 不包含按钮名称和值

    我的 ajax 没有序列化按钮名称和值 我有一个非常简单的表格 它有一个按钮和一个文本框
  • 超时已过。操作完成前超时时间已过或服务器未响应

    我不确定这是 VB NET 错误还是 SQL Server 错误 但我通过以下堆栈跟踪得到上述错误 SqlException 0x80131904 超时 已到期 超时时间已过 在操作完成之前 或者服务器没有响应 System Data Sq
  • Java Swing JTextArea 不工作

    我正在开发一款游戏 在此部分中 将打开一个新窗口来显示游戏说明 唯一的问题是 当 txt 文件超过 20 行时 JTextArea 只显示一行 我是这方面的新手 所以我不确定我错过了什么 谢谢 class Instruction exten
  • 如何使用 MediaRecorder 在 Android 中录制原始 AAC 音频文件? AAC_ADTS 不起作用

    我正在使用 Android MediaRecorder 录制 AAC 编码的音频文件 将输出格式设置为 MPEG 4 效果很好 但由于我的音频播放器既不支持 MPEG 4 也不支持 3GP 我尝试使用输出格式获取原始 AAC 文件AAC A
  • 如何在 REPL 中重新加载 clojure 文件

    无需重新启动 REPL 即可重新加载 Clojure 文件中定义的函数的首选方法是什么 现在 为了使用更新的文件 我必须 edit src foo bar clj 关闭 REPL 打开 REPL load file src foo bar
  • 为什么 ViewController 内的 tableView 的 reloadData 显示错误?

    我在视图控制器中有一个 tableView 但是 reloadData 不适用于 tableView Xcode 显示错误 thread1 exc bad instruction 我尝试将 reloadData 分配给其他方法 但结果是相同
  • JavaScript 中的 Number.sign()

    想知道是否有任何重要的方法可以找到数字的符号 符号函数 http en wikipedia org wiki Signum function 可能比明显的解决方案更短 更快 更优雅 var sign number gt 0 1 number
  • 如何使用Phonegap 3.0浏览并选择SD卡中的文件?

    通过Phonegap 3 0的API 当我使用 UI 单击链接或按钮时 我想浏览 SD 卡中的文件 例如 p Upload p 假设 browserFile 函数包含浏览功能 但需要 UI 实现 Or
  • 使用 AngularJS 指令嵌入 Vimeo 视频

    我在 AngularJS 应用程序中有一个部分 HTML 页面 我正在尝试向其中添加 vimeo 视频 该模板有一个图像和播放按钮 单击时会淡出以显示底层 iFrame 我还想要这个点击触发器来播放视频 这样就不必按两个播放按钮 我的部分页