【问题标题】:Dynamically display input checkbox using ng-repeat based on condition根据条件使用 ng-repeat 动态显示输入复选框
【发布时间】:2016-04-05 17:54:08
【问题描述】:

我正在尝试根据条件标志动态显示带有标签的复选框。 标签值如下:

$scope.listA = [
   {
     name : "Sample 1"
   },
   {
     name : "Sample 2"
   }
];
$scope.listB = [
   {
     name : "Result 1"
   },
   {
     name : "Result 2"
   },
   {
     name : "Result 3"
   }
];

这是我正在使用的 html。

<input type="checkbox" ng-repeat="item in listA"/>{{item.name}}

我有一个变量,我需要根据它显示 $scope.listA 或 $scope.listB。

var mode = "A";

如果 mode = A 那么我需要将 listA 显示为复选框标签。如果还有其他问题,我需要将 listB 显示为复选框标签。

我该怎么做呢?以及如何使复选框默认被选中?

【问题讨论】:

    标签: javascript jquery angularjs checkbox


    【解决方案1】:

    尝试使用函数返回要显示的值,而不是直接返回列表。像这样

    <input type="checkbox" ng-repeat="item in whichItems()"/>
    
    
    $scope.whichItems = function() {
        var ret = listA;
        if($scope.mode != 'A') {
           ret = listB;
        }
        return ret;
    };
    

    编辑:绑定到数组 你必须在你的数据结构中有一个共同的值并与之绑定。例如:

      var mydata = [{itemLabel:'item1',selected:false},  {itemLabel:'item2', selected:false}]
    

    然后在您拥有的复选框中

       <div ng-repeat="item in whichItems()">
          <input type="checkbox" ng-model="item.selected">{{item.itemLabel}}
       </div>
    

    【讨论】:

    • 此外:在您的复选框和标签周围添加一个周围的 div(或跨度或标签),并在此 div 上设置 ngRepeat。否则只会重复复选框而不是标签。
    • 我怎样才能为每个输入附加一个 ng-model 为真(检查)和假(未检查)??
    【解决方案2】:

    Scott 关于数组选择的回答是正确的。 要使您的复选框默认选中,请在使用表达式选中复选框时使用 ng-checked

    &lt;input type="checkbox" ng-checked="expression"&gt;

    如果您希望它始终被默认选中,则为选中的属性

    <input type="checkbox" checked>
    

    【讨论】:

      猜你喜欢
      • 2015-07-26
      • 2020-06-29
      • 2023-03-29
      • 1970-01-01
      • 2017-01-09
      • 2017-09-13
      • 1970-01-01
      • 2019-09-15
      • 1970-01-01
      相关资源
      最近更新 更多