-1

2つのMDボタンと1つのAngularJSスコープ変数isPlayingを使用する非常に単純なng-if構成を使用しています。しかし、ng-ifは変数とともに動作しないようです。コンソールツールを使用してボタンをクリックすると変数が変わるのがわかりますが、DOMは変更されません。奇妙なことに、ng-ifは、メインナビゲーションのボタンなど、他のAngularコンポーネントを動かすとトリガするように見えます。ngIfが変数で更新されない

HTML/MD/PHP:

<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

問題はタイムアウトブロック内にラップ機能によって引き起こされていました。私は$timeoutsetTimeoutを交換し、すべてが正常に動作し始めた:

$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); 
} 
関連する問題