【问题标题】:How to apply an ng-class when data is added dynamically (?)动态添加数据时如何应用 ng-class (?)
【发布时间】:2015-01-22 20:57:54
【问题描述】:

我有一个使用 Ionic/Angular 运行的应用程序,我只需要应用一个来自 animate.css library 的类,我这里有这个函数,一旦你调用 $scope.addLineToBetSlip() 就可以工作,我想要那个类一旦你调用该函数,我提到的工作:

$scope.addLineToBetSlip = function(line, row, type) {
  $scope.picksCount = !$scope.picksCount;
  var spreadSelected = (row.spreadSelected && type === 'spread'),
    totalSelected = (row.totalSelected && type === 'total'),
    moneyLineSelected = (row.moneyLineSelected && type === 'moneyline');
  if (spreadSelected || totalSelected || moneyLineSelected) {
    BetSlipFactory.remove(line, row, type);
  }else {
    BetSlipFactory.add(line, row, type);
  }
  return $scope.picksCount;
};

这是我的错误 HTML:

更新

只需更改我的代码,现在可以工作,但只是第一次{{betSlipCount}} chenges

<span class="badge badge-assertive animate infinite"
      ng-class="{bounceIn: picksCount}">{{betSlipCount}}</span>
<i class="icon ion-code-download"></i>

我看到的另一种方式是,{{betSlipCount}} 不断变化,实际上每次调用$scope.addLineToBetSlip(){{betSlipCount}} 都会发生变化,所以另一种方式是每次{{betSlipCount}} 变化时激活该类。

【问题讨论】:

  • 你可能弄错了ng-class:它接受一个对象,其中 keyCSS 类的名称,而值是评估条件,当true 时,将类应用于元素。
  • 以及如何在每次调用$scope.addLineToBetSlip 时应用它?或者当{{betSlipCount}} ?
  • 这个问题一团糟。编辑中的大量代码更改,没有连接脚本和元素的范围参考,并提到了各种断开连接的变量/函数。创建一个复制您的问题的演示

标签: javascript angularjs ionic-framework animate.css


【解决方案1】:

我使用 ng-class 已经有一段时间了,但我很确定语法是:
ng-class="{'className': booleanVariable}"
(意味着你已经得到了类名和变量)
(您也可能想尝试用单引号将类名括起来,但我不确定这是否有必要)

布尔变量可以是返回布尔变量的函数,即:
ng-class="{'fadeIn': addLineToBetSlip()}"

但您的函数似乎没有返回布尔变量。您可以让它在 $scope 中切换一个布尔变量,并使用该变量名称而不是函数,或者您可以让函数返回 true。

但我也不确定为什么您不总是希望 'fadeIn' 类处于活动状态。

也许您可以告诉我们更多关于您的代码应该做什么以及它当前正在做什么。

更新
控制器代码:

//Intialize the boolean variable
$scope.picksCount = false;

$scope.addLineToBetSlip = function(line, row, type) {
    var spreadSelected = (row.spreadSelected && type === 'spread');
    var totalSelected = (row.totalSelected && type === 'total');
    var moneyLineSelected = (row.moneyLineSelected && type === 'moneyline');

    if (spreadSelected || totalSelected || moneyLineSelected)
    {
        BetSlipFactory.remove(line, row, type);
    }
    else
    {
        BetSlipFactory.add(line, row, type);
    }

    $scope.picksCount = !$scope.picksCount;

};

HTML 代码:

<span class="badge badge-assertive animate infinite" ng-class="{'bounceIn': picksCount}">{{betSlipCount}}</span>
<i class="icon ion-code-download"></i>

【讨论】:

  • 请看我对这个问题的更新。现在正在工作,但只是第一次调用该函数。
  • @TheUnnamed 我们需要更多信息……什么是 betSlipCount?你表现得好像它是一个布尔值,但它听起来像一个整数。如果您希望每次整数更改时都打开/关闭该类,那么您可以使用 $scope 变量并让您的函数执行类似 boolVariable = !boolVariable; 的操作
  • @TheUnnamed 它必须是一个布尔值。它可能被强制转换为布尔值和 0 = false;每隔一个数字 = true。
  • 再次查看我的代码,我添加了$scope.picksCount = !$scope.picksCount;,并在末尾添加了return $scope.picksCount === !$scope.picksCount;,因为如果整数下降或上升,我需要应用该类,但仍无法按预期工作。
  • 如果您想切换应用的顺序/未应用,将初始值更改为true(我更新的第一行)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-05
  • 2014-05-08
  • 2018-09-14
  • 2017-08-06
  • 2013-09-23
  • 2014-02-26
  • 1970-01-01
相关资源
最近更新 更多