html - AngularJS - 动态更新 ng 类名称

标签 html css angularjs animate.css

使用 animate.css与 AngularJS。我正在尝试将一个类应用于 ng-click 上的元素,但该元素没有得到更新。我尝试了多种方法(使用函数更新范围值等),但没有任何乐趣。基本上,我想在单击按钮 1 或按钮 2 时相应地向动画元素添加 'fadeIn'、'fadeOut' 和 'flipIn'、'flipOut'。

<button ng-click="animate = !animate; classIn = 'fadeIn'; classOut = 'fadeOut'" class="btn btn-default">Fade</button>

<button ng-click="animate = !animate; classIn = 'flipIn'; classOut = 'flipOut'" class="btn btn-default">Flip</button>

<div class="animated-wrapper">
  <h1 class="text-center animated" ng-class="{'{{classIn}}': animate, '{{classOut}}': !animate}">Animation</h1>
</div>

谢谢

编辑: 稍微修改一下代码后,我想出了一个解决方案(稍微修改一下@hadiJZ 的回答):

<button ng-click="setAnimateClass(animate = !animate, 'fadeIn', 'fadeOut')" class="btn btn-default">Fade</button>

<button ng-click="setAnimateClass(animate = !animate, 'bounceIn', 'bounceOut')" class="btn btn-default">Bounce</button>

<div class="animated-wrapper">
    <h1 class="text-center animated" ng-class="animateClass">Animation</h1>
</div>

在 Controller 中:

$scope.animate = true;

$scope.setAnimateClass = function (animate, classIn, classOut) {
  if (animate) {
    $scope.animateClass = classIn;
  } else {
    $scope.animateClass = classOut;
  }
};

最佳答案

您必须将类名放在单引号中。 我举个简单的例子。

var myapp = angular.module('myapp', []);
myapp.controller('Ctrl', function ($scope) {
  var vm = this;
  vm.animate = true;
  vm.cssVal = "";
  
  vm.addFadeClass = function(animate){
    if(animate)
      vm.cssVal = "fadeIn";
    else
       vm.cssVal = "fadeOut";
    
    }
  vm.addFlipClass = function(animate){
    if(animate)
      vm.cssVal = "flipIn";
    else
       vm.cssVal = "flipOut";
    
    }
  
  
});
.fadeIn{
  color: red;
  }

.fadeOut{
  color:blue;
  }
.flipIn{
  font-size:20px;
  }

.flipOut{
  font-size:40px;
  }
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="myapp" ng-controller="Ctrl as vm">
 <button ng-click="vm.addFadeClass((animate = !animate))" class="btn btn-default">Fade</button>
<button ng-click="vm.addFlipClass((animate = !animate))" class="btn btn-default">Flip</button>


<div class="animated-wrapper">
  <h1 class="text-center animated" ng-class="vm.cssVal" >Animation</h1>
</div>
  
</div>

关于html - AngularJS - 动态更新 ng 类名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35941398/

相关文章:

php - 如何在 while 循环中显示数据库中的图像

html - 表格 tr 边框宽度 100%

javascript - 使 Div 适合整个窗口

javascript - Protractor 中的 While 循环

testing - E2E 测试远程 AngularJS 应用程序

php - "Mapping"指向字符的箭头

html - 为什么菜单显示在图像后面?

html - 制作带有边框的切 Angular

javascript - getSVGDocument() 在 Safari 中返回 null

javascript - 使用多个服务的 AngularJS 指令