AngularJS在ng-repeat中禁用一个下拉菜单

AngularJS disabling one dropdown in ng-repeat

本文关键字:一个 下拉菜单 ng-repeat AngularJS      更新时间:2023-09-26

我有以下ng-repeat在我的HTML代码:

<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>

然后在控制器中输入:

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

我面临的问题是,当我改变下拉菜单中的选择时,应该根据值禁用或启用下拉菜单。然而,当我在其中一个值为3的下拉菜单中更改选择时,所有下拉菜单都更改为禁用状态,而不是那个特定的下拉菜单。

请让我知道如何修复这个代码,所以当ng-repeat显示所有行,我改变其中一行的下拉值,它只是禁用特定的一个,而不是禁用所有行的所有下拉。

Angular ng-repeat 创建继承父作用域的子作用域。在您的示例中,所有ng-repeat的作用域都继承了父作用域的display属性。因此,当这个属性改变时,它会反映在所有作用域上。

尝试this代替$scope来访问ng-repeat的当前作用域:

$scope.selected = function (value) {
     this.te = value;
     if (this.te == 3) {
         this.display = true;
     }        
};
相关文章: