Javascript 如何访问另一个视图';s$角度范围?

Javascript 如何访问另一个视图';s$角度范围?,javascript,angularjs,youtube,Javascript,Angularjs,Youtube,我使用AngularJS构建一个web应用程序。现在我使用AngularJS YouTube的嵌入插件。确切地说: 现在我通过以下事件侦听器暂停视频:player.pauseVideo()。我已将此按钮添加到按钮中 YouTube嵌入与调用上述函数位于同一页面上。 该对象的标记为: <youtube-video video-id="video" id="youtube-video" player="player" style="height:450px; width: 100%">&

我使用AngularJS构建一个web应用程序。现在我使用AngularJS YouTube的嵌入插件。确切地说:

现在我通过以下事件侦听器暂停视频:
player.pauseVideo()。我已将此按钮添加到按钮中

YouTube嵌入与调用上述函数位于同一页面上。 该对象的标记为:

<youtube-video video-id="video" id="youtube-video" player="player" style="height:450px; width: 100%"></youtube-video>

对象上的player属性应该用于获取对象和函数调用之间的链接

但是现在我还想在另一个单独的视图html文档上访问player对象。该页面上的函数不会在view.html上暂停视频

有人知道如何使用类似的调用(如
player.pauseVideo())访问另一个页面上的对象吗

我假设“player对象”指的是范围变量
$scope.player
,而“另一个页面”指的是另一个视图,具有不同的范围,呈现到同一个html文档中,该视图与播放器位于同一个html文档中。 如果我对这些假设是正确的,那么你基本上有两个选择,都是有效的“角度方式”

使用全局控制器 您可以在html文档中引入一个页面范围的控制器(我们称之为MasterController),并在那里定义
$scope.player
。然后,您可以访问嵌套在MasterController中的每个控制器中的
$scope.player
。请注意,不能为嵌套控制器上的
$scope.player
赋值,因为这会阻止原型继承机制

使用事件 angular中的每个范围都是
$rootScope
的子范围。通过在需要从播放机触发功能的控制器中使用
$rootScope.$broadcast
,并在播放机连接的控制器中使用
$scope.$listen
,您可以从应用程序中的每个可能位置控制播放机


< >为了决定哪种方式对你的用例更好,考虑下面的属性:

  • 事件是“单向的道路”,如果您需要从玩家范围之外的玩家那里检索任何值(比如,它的当前播放位置),您需要以另一种方式实现相同的机制,而使用全局控制器就像编写
    $scope.player
  • 事件支持开发不耦合、可重用的组件。如果您要实现一个视频集线器,除了youtube还支持vimeo和其他平台,那么您可以通过使用事件抽象出所有这些不同插件的控制,只需插入新的视频平台,而无需修改其他视图控制器

  • 我推荐艾迪·奥斯马尼的书和

    上的角度指南,你说“另一个HTML文档”,然后是“另一个页面”?你的意思是在Angular应用程序中单独的网页还是单独的视图?是的,完全正确@斯德格鲁克