我的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>
然后在我的控制器中我有:
$scope.display = false;
$scope.selected = function (value) {
$scope.te = value;
if ($scope.te == 3) {
$scope.display = true;
}
};
我面临的问题是当我在下拉列表中更改选择时,它应该禁用或启用基于值的下拉列表。但是,当我更改其中一个值为3的下拉列表中的选择时,所有下拉列表都会更改为禁用状态而不是特定值。
请告诉我如何修复此代码,以便在ng-repeat
显示所有行后我更改其中一行的下拉列值时,它会禁用该特定行,而不是禁用所有行中的所有下拉列表
答案 0 :(得分:1)
Angular ng-repeat
创建从父作用域继承的子作用域。在您的情况下,您的所有ng-repeat
范围都会从父作用域继承display
属性。因此,当此属性更改时,它会反映在所有范围上。
尝试使用this
代替$scope
来访问ng-repeat
的当前范围:
$scope.selected = function (value) {
this.te = value;
if (this.te == 3) {
this.display = true;
}
};