【问题标题】:Angular JS Force iframe to reloadAngular JS强制iframe重新加载
【发布时间】:2015-09-12 04:48:20
【问题描述】:

我正在制作一个应用程序,我在同一页面中有不同的视频,我不想同时运行不同的视频,所以我希望当用户播放另一个视频时我应该重新加载其他 iframe (所以视频会自动停止)?

是否可以从控制器中使用 iframe 进行操作,如果您可以提供一个简单的示例或任何可以解决这个问题的东西,我已经工作了两天以上。

控制器:

function MyCtrl($scope) {
    $scope.video1 = 'https://www.youtube.com/embed/wsXWjj88vKo';
    $scope.video2 = 'https://www.youtube.com/embed/FVXajf9ALPM';
}

HTML:

<div ng-controller="MyCtrl">
<iframe  ng-src="{{video1}}" width="400" height="300" frameborder="0" allowfullscreen></iframe>
    <iframe  ng-src="{{video2}}" width="400" height="300" frameborder="0" allowfullscreen></iframe>
</div>

JSFIDDLE

或任何强制重新加载按钮的方式,例如:

 $scope.reload = function() {
   $scope.video1 = 'https://www.youtube.com/embed/wsXWjj88vKo';
    };  

【问题讨论】:

  • 我使用了一个自定义指令 ng-refresh,它会监视一个变量并在该变量发生变化时刷新页面
  • 你能给我一个这个指令的例子,或者你能不能把它应用到我的例子中,那会很棒

标签: javascript html angularjs iframe


【解决方案1】:

刷新指令示例

csapp.directive('csReloadOn', ['$timeout', function ($timeout) {

var getTemplate = function () {
    return '<div ng-if="doRefreshPageOnModeChange"><div ng-transclude=""></div></div>';
};

var linkFunction = function (scope, element, attrs) {
    scope.doRefreshPageOnModeChange = true;

    scope.$watch(attrs.csReloadOn, function (newVal, oldVal) {
        if (newVal === oldVal) return;
        scope.doRefreshPageOnModeChange = false;
        $timeout(function () { scope.doRefreshPageOnModeChange = true; }, 100);
    });
};

return {
    restrict: 'AE',
    transclude: true,
    template: getTemplate,
    link: linkFunction
};
}]);

如何使用它

     <div cs-reload-on="someVar">
             ----- contents to reload ----
     </div>

【讨论】:

  • 我不明白你的例子!有没有可能给我一个 JSfiddle 或 Codepen 的例子!我会很感激的
  • 任何你想重新加载内容的变量
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-12
  • 1970-01-01
  • 2022-11-19
  • 1970-01-01
  • 1970-01-01
  • 2019-04-16
相关资源
最近更新 更多