5

如何在 Angular js 中为 ng-disabled 设置多个值?

我的问题是用下面的 JS fiddle 解释的:http: //jsfiddle.net/FJf4v/10/

    <div ng-app>
<div ng-controller="myCnt">

    <h3>A ->> <input type="checkbox" ng-model="check"> </input></h3>
    <h3>B ->> <input type="checkbox" ng-model="check"> </input></h3>  

    <br/>
    <input type="checkbox" ng-disabled="check">Chkbox1 to be disabled</input>
    <input type="checkbox" ng-disabled="check">Chkbox2 to be disabled</input>
    <hr/>
</div>
</div>

Javascript:
function myCnt($scope) {
//
}

在这个小提琴中,总共有 4 个标记为 A、B、Chkbox1 和 Chkbox2 的复选框。我正在寻找的是在选中 A 和 B 复选框之一后禁用 chkbox1 和 chkbox2 。然而,它完成了一半。如果您单击 A 或 B,则这两个按钮都会被选中,并且下面的 chkboxes 会被禁用。但是,如果我只是单击其中任何一个复选框,我不想同时选中 A 和 B 复选框。

我希望,你会得到我的问题。

谢谢 !!

4

2 回答 2

16

使用两个单独的变量,即 checkA 和 checkB。然后对于 ng-disabled 使用逻辑 OR 运算符,如下所示:

ng-disabled="checkA || checkB"

我认为这就是你想要实现的目标......?

于 2013-08-15T20:57:59.197 回答
6

所以,正如我在评论中所说,如果你想用很长的复选框列表来实现这一点,你可以尝试这种方式:(是的,对于这个例子,“很长”意味着 10)

模型
您可以使用一个简单的对象,该对象将包含复选框的所有值,我使用 ng-repeat 执行此操作,但它可以是任何东西,只需使用相同的可迭代对象:

<input type="checkbox" ng-repeat="nb in [1,2,3,4,5,6,7,8,9,10]" ng-model="checkModels[nb]" /></h3>

这个对象在控制器中初始化,我没有指定任何值,但是你可以在这里设置一些复选框:

$scope.checkModels={};

禁用功能
这里没什么难的,而不是一长串|| 值,我们将遍历模型并在找到复选框后立即返回 true:

    $scope.isThisDisabled=function(){
     for(var i in $scope.checkModels)
     {
         if($scope.checkModels[i])
             return true             
     }
    return false;
}

然后,我们可以在 HTML 中使用这个函数:

<input type="checkbox" ng-disabled="isThisDisabled()">Chkbox1 to be disabled</input>

修改后的小提琴来测试这个:http: //jsfiddle.net/DotDotDot/FJf4v/12/

玩得开心

于 2013-08-16T15:14:46.013 回答