【问题标题】:Angular js ng-class false condition not working in ng-repeatAngular js ng-class错误条件在ng-repeat中不起作用
【发布时间】:2014-08-18 10:08:15
【问题描述】:

如果选择了radio,我想突出显示ling-repeat, ng-class true 内部条件有效,但false 条件无效,请检查下面的代码

<div ng-init="friends = [
        {name:'John', age:25, gender:'boy'},
        {name:'Jessie', age:30, gender:'girl'},
        {name:'Johanna', age:28, gender:'girl'},
        {name:'Joy', age:15, gender:'girl'},
        {name:'Mary', age:28, gender:'girl'},
        {name:'Peter', age:95, gender:'boy'},
        {name:'Sebastian', age:50, gender:'boy'},
        {name:'Erika', age:27, gender:'girl'},
        {name:'Patrick', age:40, gender:'boy'},
        {name:'Samantha', age:60, gender:'girl'}
      ]">
        <ul class="example-animate-container">
          <li class="animate-repeat" ng-repeat="friend in friends" ng-class="{true:'hightlight',false:''}[radioBox==friend.name]">
             <input type="radio" name="friends" ng-model="radioBox" value="{{friend.name}}" />
          </li>
        </ul>
      </div>

【问题讨论】:

    标签: javascript html angularjs angularjs-ng-repeat ng-class


    【解决方案1】:

    这是因为ng-repeat 为每个li 元素创建了一个新的子作用域,因此每个li 元素在自己的作用域中都有自己的radioBox 值。

    更多详情,请阅读Understanding-Scopes

    您可以通过在您的ng-model 中添加一个. 来避免这个问题,例如像这样使用model.radioBox

    <li class="animate-repeat" ng-repeat="friend in friends" ng-class="{true:'hightlight',false:''}[model.radioBox==friend.name]">
      <input type="radio" name="friends" ng-model="model.radioBox" value="{{friend.name}}" />
    </li>
    

    在你的控制器中,预先初始化model

    $scope.model = {
      radioBox: undefined
    };
    

    Plunker 示例: http://plnkr.co/edit/TcOrxhSzYtN2KCxF2M3g?p=preview

    【讨论】:

      【解决方案2】:

      如果表达式的计算结果是一个对象,那么对于具有真值的对象的每个键值对,对应的键被用作类名。

      ng-class="{'highlight':radioBox==friend.name}"
      

      【讨论】:

        猜你喜欢
        • 2016-12-01
        • 2015-09-27
        • 2016-03-24
        • 1970-01-01
        • 1970-01-01
        • 2014-02-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多