Angularjs启用ng-repeat中的禁用下拉列表

时间:2014-05-18 10:38:39

标签: javascript jquery angularjs

您好在下面的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。 谢谢

2 个答案:

答案 0 :(得分:0)

我认为你这里有拼写错误

ng-click="submit(items)"

按以下方式更正sbumitsubmit

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

答案 1 :(得分:0)

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

ng-disabled="a.display"

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

ng-change="selected(a)"

更改您的选择功能以更新项目的显示属性:

$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;
        }   
     }