Angularjs在ng-repeat中启用了禁用的下拉菜单

Angularjs enabling disabled dropdowns in the ng-repeat

本文关键字:下拉菜单 启用 ng-repeat Angularjs      更新时间:2023-09-26

嗨,在下面的html代码中,我使用ng-repeat来显示所有的行与名称和下拉列表。

<div ng-repeat="a in items">
  <div>
    <span>{{a.name}}</span>
  </div>
  <div>
    <select ng-model="a.c_id" ng-options="d.c_id as d.description for d in loclist" ng-disabled="display" ng-change="selected(a.c_id)">
    </select>
  </div>
 <button ng-click="submit(items)">Submit</button>

在我的控制器中,当c_id的值为3时,它使用以下代码禁用下拉菜单

  $scope.display = false;
    $scope.selected = function (value) {
         this.te = value;
         if (this.te == 3) {
             this.display = true;
         }        
    };

使用提交按钮,我想首先启用之前禁用的所有下拉菜单。使用以下代码

   $scope.submit=function(items)
    {
      for(i=0; i< items.length; i++)
        {
            this.display=false;
        }   
     }

行不通。它不会将display=false设置为启用下拉菜单。请让我知道如何纠正这个问题,以便我可以将显示重置为false。由于

一个简单的解决方案是将ng-disabled绑定到一个项而不是作用域:

ng-disabled="a.display"

ng-change上,将项目传递给函数:

ng-change="selected(a)"

更改select函数以更新项的显示属性:

$scope.selected = function (item) {
     var value = item.c_id;
     this.te = value;
     if (this.te == 3) {
         item.display = true;
     }        
};

在提交函数中,只需循环遍历项目并重置显示:

$scope.submit=function(items)
    {
      for(i=0; i< items.length; i++)
        {
            items[i].display=false;
        }   
     }

我想你这里打错了

ng-click="submit(items)"

sbumit改为submit

$scope.submit=function(items)
    {
      for(i=0; i< items.length; i++)
        {
            this.display=false;
        }   
     }