Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Froogaloop Vimeo';完成';角度指令中的事件_Angularjs_Angularjs Directive_Vimeo_Froogaloop - Fatal编程技术网

Angularjs Froogaloop Vimeo';完成';角度指令中的事件

Angularjs Froogaloop Vimeo';完成';角度指令中的事件,angularjs,angularjs-directive,vimeo,froogaloop,Angularjs,Angularjs Directive,Vimeo,Froogaloop,我在角度指令中触发Vimeo“Finish”事件时遇到问题。 Vimeo视频正在加载,播放和暂停功能正常工作 我的HTML代码 <vimeo control-boolean="isPlaying" vid="{{videoslist[id].code}}" pid="1"></vimeo> <button ng-click="prevVid()">Prev</button> <button ng-if="isPlaying" ng-click

我在角度指令中触发Vimeo“Finish”事件时遇到问题。 Vimeo视频正在加载,播放和暂停功能正常工作

我的HTML代码

<vimeo control-boolean="isPlaying" vid="{{videoslist[id].code}}" pid="1"></vimeo>
<button ng-click="prevVid()">Prev</button>
<button ng-if="isPlaying" ng-click="status()">Pause</button>
<button ng-if="!isPlaying" ng-click="status()">Play</button>
<button ng-click="nextVid()">Next</button>
<div class="videoInfo">
  <h2>{{videoslist[id].title}}</h2>
  <p>{{videoslist[id].discription}}</p>
</div>
directive('vimeo', function($sce) {
  return {
      restrict: 'EA',
      replace: true,
      scope: {
        //Assumes that true means the video is playing
        controlBoolean: '='
      },
      template: '<iframe id="video"></iframe>',
      link: function postLink(scope, element, attrs) {
        attrs.$observe('vid', function(value) {
          var url = "http://player.vimeo.com/video/" + attrs.vid + "?title=0&byline=0&portrait=0&api=1&autoplay=true";
          element.attr('src', url);
          var iframe = element[0],
          player = $f(iframe);
          player.addEvent("ready", function() {        
            player.addEvent('finish', onFinish);
          });
          function onFinish() {
            console.log("vimeo finish")
          }
        scope.$watch('controlBoolean', function(){
          if(scope.controlBoolean){
            player.api('play');
          }
          else{
            player.api('pause');
          }
        });
        });

      }
    };
  });
我用它来帮助我执行指令:

以及Vimeo的网站,了解“如何触发事件”:


有人知道我做错了什么吗

您应该在内部添加finishready事件的代码,如下所示:

scope.$watch('controlBoolean', function(){
           if(scope.controlBoolean){
              player.api('play');
              player.addEvent("ready", function() {  
                 console.log("vimeo ready");
                 player.addEvent('finish', onFinish);
              });
         } else {
           player.api('pause');
         }
       });
我修改了plunker,它对我有效

scope.$watch('controlBoolean', function(){
           if(scope.controlBoolean){
              player.api('play');
              player.addEvent("ready", function() {  
                 console.log("vimeo ready");
                 player.addEvent('finish', onFinish);
              });
         } else {
           player.api('pause');
         }
       });