Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当变量随角度变化时,如何使某个对象闪烁_Javascript_Angularjs - Fatal编程技术网

Javascript 当变量随角度变化时,如何使某个对象闪烁

Javascript 当变量随角度变化时,如何使某个对象闪烁,javascript,angularjs,Javascript,Angularjs,我是angular的新手,我有一些css如下: .heartbeat { transition:opacity 0.5s linear; } .heartbeat-active { opacity: 1; } <div highlight-on-change="{{value}}"></div> 定期更新作用域上的属性。当属性更改时,如何使此转换运行一次 我已经研究了ngAnimation和addClass,但还没有弄清楚如何以声明的方式将它们粘在

我是angular的新手,我有一些css如下:

.heartbeat
{
     transition:opacity 0.5s linear;
}

.heartbeat-active
{
    opacity: 1;
}
<div highlight-on-change="{{value}}"></div>
定期更新作用域上的属性。当属性更改时,如何使此转换运行一次


我已经研究了ngAnimation和addClass,但还没有弄清楚如何以声明的方式将它们粘在一起。如果可能的话?

只需监视您提到的属性,并在触发监视时激活addClass heartbeat

$scope.$watch('yourProperty', function(new, old) {
  if(new != old)
     $scope.yourElement.addClass(".heartbeat-active");
});
我假设要闪烁的元素在范围内被引用。
第二件事-您应该为heartbeat类添加一些不透明度的初始值。

受gnom1gnoms answer和这个线程的启发,我最后做的是:

app.directive('highlightOnChange', function() {
  return {
    link: function($scope, element, attrs) {
      attrs.$observe('highlightOnChange', function(val) {
        var el = $(element);
        el.removeClass('heartbeat');
        _.defer(function() {
          el.addClass('heartbeat')
        });
      });
    }
  };
});
也就是说,创建一个指令会观察属性。然后我可以这样使用它:

.heartbeat
{
     transition:opacity 0.5s linear;
}

.heartbeat-active
{
    opacity: 1;
}
<div highlight-on-change="{{value}}"></div>


并且不需要从$scope引用元素。

-1非常不干净。这不应该是
$watch
,而是一个角度动画。另外,除非
new
old
不同,否则
$watch
不应启动,因此不需要if语句。另外,千万不要给变量命名
new
这是javascript的保留字。@Freshyeball谢谢你的评论。我的指令和你提到的角度动画有什么区别?animatin更适合吗?animatin是它自己的动物,也是angular内置的基础设施的一部分,用于管理这类事情。对于动画,您不必使用
$watch
,它应该是可以在HTML级别声明的内容。