-1

У меня очень простая конструкция ng-if с использованием двух кнопок MD и одной переменной диапазона AngularJS isPlaying. Однако ng-if, похоже, не работает вместе с переменной. Я вижу переменную, изменяющуюся при нажатии кнопок, используя консольные инструменты, но никаких изменений в DOM не происходит. Как ни странно, ng-if, похоже, срабатывает, когда я нахожу другие угловые компоненты, например кнопки в главном навигаторе.ngIf не обновляется с переменной

HTML/MD/РНР:

<md-button class="md-icon-button" ng-if="!isPlaying" ng-click="play()" aria-label="Play"> 
    <md-icon md-svg-src="<?php echo get_stylesheet_directory_uri(); ?>/img/icon/ic_play_arrow_black_24px.svg"></md-icon> 
</md-button> 
<md-button class="md-icon-button" ng-if="isPlaying" ng-click="pause()" aria-label="Pause"> 
    <md-icon md-svg-src="<?php echo get_stylesheet_directory_uri(); ?>/img/icon/ic_pause_black_24px.svg"></md-icon> 
</md-button> 

JS:

$scope.play = function() { 
    player.playVideo(); 
    $scope.isPlaying = true; 
} 

$scope.pause = function() { 
    player.pauseVideo(); 
    $scope.isPlaying = false; 
} 
+0

Кажется работать здесь: https://jsfiddle.net/bv7dyhvc/ – Rob

+0

Ok. Любые советы о том, как действовать дальше? Потому что скрипка - просто подтверждение того, что она должна работать, а не причина, почему она не работает. –

+0

Затем попробуйте создать jsfiddle/plunker, который воспроизводит вашу проблему. Я не вижу, как кто-то может помочь вам, если мы не сможем увидеть проблему. – yarons

ответ

0

Проблема была вызвана функция, обернутой внутри блока тайм-аута. Я заменил setTimeout с $timeout и все начали работать нормально:

$scope.isPlaying = false; 
$scope.videoTime = 0; 
function onPlayerStateChange() { 
    console.log(player); 
    if (player.getPlayerState() === 1) 
     $scope.isPlaying = true; 
    else 
     $scope.isPlaying = false; 
    $timeout(onPlayerStateChange, 500); 
} 
Смежные вопросы