我正在尝试构建一个可以在我的网站上看到的音频播放器。首先它将被隐藏,直到有人试图播放音频文件,然后它会弹出页面底部。
所以我的初始页面有导航栏,它有自己的控制器,然后是一个中间部分,其控制器由ngRoute
确定,最后是底部的音频播放器,由{{1控制}}
加载页面时,PodcastController
中的$scope.showPlayer
变量初始化为PodcastController
,这会正确隐藏播放器。但是,当我稍后单击要播放的音频文件时,false
值会更新,但不会使播放器显示。很奇怪。
我已将$scope.showPlayer
输出到控制台,看起来已更改为$scope.showPlayer
。我不知道为什么这不会更新ng-show元素。
有什么想法吗?
页面中的ngRoute元素是:
true
底部的音频播放器使用angularjs soundmanager2,如下所示:
<div class="container" ng-view=""></div>
可能相关的一件事是,点击音频时页面的一般结构是:
<div class="player-container" ng-show="showPlayer" ng-controller="PodcastController">
<sound-manager></sound-manager>
<span class="glyphicon glyphicon-play" play-music></span>
<span class="glyphicon glyphicon-pause" pause-music></span>
<div class="seekBase" seek-track>
<div class="seekLoad" ng-style="{width : ( progress + '%' ) }"></div>
</div>
<span class="glyphicon glyphicon-stop" stop-music></span>
<div>
即。有两个元素都由<nav ng-controller="SearchController"></nav> ----> Navbar
<div ng-controller="PodcastController"></div> ----> Main Middle Section of Page
<div ng-controller="PodcastController"></div> ----> Player at Bottom of Page
控制 - 不确定这是否会导致任何困难...这个Angular的东西相当新......
答案 0 :(得分:0)
所以我解决这个问题的方法是为音频播放器创建一个名为PlayerController的新控制器。
现在,用于切换音频播放器显示的$ scope.showPlayer变量随后通过PodcastController的服务进行更新。
即。当我在播客页面上时,我点击一个播放按钮,然后PodcastController调用一个名为podcast_service的服务,并在那里更新播放器状态。 PlayerController通过使用以下代码来关注podcast_service中的播放器状态:
$scope.$watch(podast_service.getPlayerStatus, function() {
$scope.showPlayer = podcast_service.getPlayerStatus()
});
这样,只要podcast_service获得玩家状态改变,PlayerController就会注意到,并隐藏/显示玩家。一切都非常整洁。
答案 1 :(得分:-1)
将两个使用PodcastController的元素包装在一个公共元素中,并将控制器放在该元素上。像这样:
<div ng-controller="PodcastController">
<div></div> ----> Main Middle Section of Page
<div></div> ----> Player at Bottom of Page
</div>