-1

2 개의 MD 버튼과 1 개의 AngularJS 스코프 변수 isPlaying을 사용하여 매우 간단한 ng-if 구성을했습니다. 그러나 ng-if는 변수와 함께 작동하지 않는 것 같습니다. 콘솔 도구를 사용하여 버튼을 클릭하면 변수가 변경되는 것을 볼 수 있지만 DOM은 변경되지 않습니다. 이상하게도 ng-if는 기본 탐색에서 버튼과 같은 다른 각도 구성 요소를 가리키면 트리거되는 것처럼 보입니다.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

좋아. 다음으로 진행하는 방법에 대한 팁? 바이올린은 단순히 효과가 있다는 것을 확인한 것이지 작동하지 않는 이유가 아닙니다. –

+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); 
} 
관련 문제