2016-08-11 202 views
-1

我有一個非常簡單的ng-if結構,它使用兩個MD按鈕和一個AngularJS範圍變量isPlaying。但是,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

確定。有關如何繼續下一步的任何提示?因爲小提琴只是確認它應該起作用,而不是它不起作用的原因。 –

+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); 
}