该应用程序有一个控制器,它使用服务来创建视频播放器的实例。视频播放器每隔几秒就会触发事件来显示进度。当视频到达某个点时,我想在视频播放器顶部显示一个小部件。
该视图将小部件包装在 ng-show 指令中。
在触发事件并填充值后,dom 元素需要超过 60 秒的时间才能接收到删除 ng-hide 类的信号。
如果我尝试使用普通的 dom 方法(如 document.getElementById(eleId).innerHTML = newHTML)来实现这一点,更新是即时的。
我究竟做错了什么?以下是完整的代码序列:
控制器:
MyApp.controller('SectionController', ['$scope', 'PlayerService'], function($scope, PlayerService){
$scope.createPlayer = function() {
PlayerService.createPlayer($scope, wrapperId);
}});
Run Code Online (Sandbox Code Playgroud)
服务:
MyApp.service('PlayerService', [], function(){
this.createPlayer=function(controllerScope, playerWrapper){
PLAYER_SCRIPT.create(playerWrapper) {
wrapper : playerWrapper,
otherParam : value,
onCreate : function(player) {
player.subscribe(PLAY_TIME_CHANGE, function(duration){
showWidget(controllerScope, duration);
})
}
}
}
function showWidget(controllerScope, duration) {
if(duration>CERTAIN_TIME) {
$rootScope.widgetData = {some:data}
$rootScope.showWidget = true;
}
}});
Run Code Online (Sandbox Code Playgroud)
看法:
<div ng-show="showWidget"> <div class="wdgt">{{widgetData.stuff}}</div> </div>
Run Code Online (Sandbox Code Playgroud)