angular.js - angular-timer 插件的finish-callback()不刷新视图
滿天的星座
滿天的星座 2017-05-15 17:05:21
0
1
870
<p ng-show="smsSent">
<timer interval="1000" countdown="60" end-time="0" finish-callback="smsSent=!smsSent">{{seconds}}</timer>
</p>

我想在这个timer倒数计时结束后,调用finish-callback,然后smsSent的值就取反了,因此<p ng-show="smsSent">这个p会隐藏起来,问题是....现在倒数计时到0了之后,我观察到smsSent的值确实变了,但是<p ng-show="smsSent">这个p并不隐藏,意味着没有刷新试图,求助,我改如何做才能隐藏那个p

滿天的星座
滿天的星座

Antworte allen(1)
Ty80

谢邀 能提供timer指令的写法吗,或者给一个jsbin或者jsfiddle.net的链接重现一下。目前提供的信息,是值改了,但是 Dom 没渲染,我认为你可以在 finish-callback 中 $apply 或者 $evalAsync 一下触发脏检查。

------------------ 分割线 ----------------

找到你说的这个插件 https://github.com/siddii/ang... ,我一会 pull request,你就不用在 finish-callback 中主动触发 $apply.

------------------ 分割线 ----------------
https://github.com/siddii/ang...

已经pull request了, 主要是下面这段,当调用$scope.finishCallback, 主动触发脏检查循环

             if($scope.finishCallback) {
 -              $scope.$eval($scope.finishCallback);
 +              if ($rootScope.$$phase) {
 +                $scope.$evalAsync($scope.finishCallback);
 +              } else {
 +                $scope.$apply($scope.finishCallback);
 +              }
              }
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage