Javascript 如何将ng show与控制器中返回true/false的函数一起使用

Javascript 如何将ng show与控制器中返回true/false的函数一起使用,javascript,angularjs,html,Javascript,Angularjs,Html,我是AngularJS的新手,在理解ng show属性的工作原理方面遇到了困难。我想在视频中创建一个模式弹出窗口,它显示视频的当前时间是7秒、14秒还是21秒。因此,我使用ng show=dc.timeCheck,其中“dc”是我的控制器,“timeCheck”是控制器中的我的函数,该函数返回“true”,并暂停视频,如果时间是上述时间之一,则返回false并播放视频。 但我无法让它工作,我没有看到的原因,尽管通过各种文件和教程 我的代码 HTML: ` 对于完整代码,pastebin链接为 J

我是AngularJS的新手,在理解ng show属性的工作原理方面遇到了困难。我想在视频中创建一个模式弹出窗口,它显示视频的当前时间是7秒、14秒还是21秒。因此,我使用ng show=dc.timeCheck,其中“dc”是我的控制器,“timeCheck”是控制器中的我的函数,该函数返回“true”,并暂停视频,如果时间是上述时间之一,则返回false并播放视频。 但我无法让它工作,我没有看到的原因,尽管通过各种文件和教程

我的代码

HTML:

` 对于完整代码,pastebin链接为 JavaScript: HTML:


`

这样做是行不通的,因为没有任何东西会触发所需时间间隔的时间检查功能。您需要在控制器中使用$timeout,以便它每7秒运行一次,或每秒钟运行一次,或根据您的需要运行一次。当它运行时,它将更新一个变量,而不是一个函数,您将拥有:

<div id="ui1" ng-show="dc.timeCheck" >
    ...
</div>

将控制器功能从var timeCheck更改为this.timeCheck您可以向我们显示完整的控制器代码吗?时间检查功能是公共的吗?您应该将timeCheck函数设置为作用域。比如$scope.timeCheck=timeCheck使用ng if而不是ng show。我猜ng显示不计算函数,。它只对布尔值起作用。@alsco77,Davide,Ved我试过了所有不起作用的地方@Ved这是javascript和html的pastebin:@Fossaduino在哪一行?您是否将$timeout服务注入控制器?@OmriAharon videojs有一个timeupdate事件,因此不需要$timeout@Omri是的,我知道了你想要pastebin链接吗?@Fossaduino我当然要look@FlorianGl我不知道,angular怎么知道在触发$digest进程时执行它呢?
    var video = videojs('myVideo');
    var timeCheck=function(){
    var currT=Math.floor(video.currentTime());

    if ((currT===7||currT===14||currT===21 )&& currT!=0)
        {   

            video.pause();
            return true;

        }
    else {
        video.play();
        return false;
    }


};
<div id="ui1" ng-show="dc.timeCheck" >
    ...
</div>
$scope.checkTimeInterval = function () { 

     $scope.timeout = $timeout($scope.checkTimeInterval, 7000); //schedule the next run

     var result = //do your tests

     $scope.timeCheck = result; //this updates the variable that is binded to the ng-show
}

$scope.timeout = $timeout($scope.checkTimeInterval, 7000); //or any other time interval