Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular Js:如何有条件地禁用所有按钮和链接?_Javascript_Angularjs - Fatal编程技术网

Javascript Angular Js:如何有条件地禁用所有按钮和链接?

Javascript Angular Js:如何有条件地禁用所有按钮和链接?,javascript,angularjs,Javascript,Angularjs,我在控制器中有一个条件。如果条件返回true,则我必须禁用所有链接并单击ngs 我们如何做: Controller : $scope.disableActions = true; 在HTML中 <button type="button" ng-click="ignoreAndRedisplay()" ng-disabled="disableActions">OpenClick</button> OpenClick 因此,通过这样做,我必须在任何地方编写ng disa

我在控制器中有一个条件。如果条件返回true,则我必须禁用所有链接并单击
ng
s

我们如何做:

Controller : $scope.disableActions = true;
在HTML中

<button type="button" ng-click="ignoreAndRedisplay()" ng-disabled="disableActions">OpenClick</button>
OpenClick

因此,通过这样做,我必须在任何地方编写
ng disabled=“disableActions”
,这将是多余的,我们如何改进按钮和链接的数量

ng禁用
这是正确的方法。这是不是多余的

如果你有n个链接和按钮,那么就用这个坏习惯 使用

$watch('disableAction',function(value){
   if(value==true){ 
    //use a selector here to select all your a and button elts and add a 
    //disabled="disabled" attribute.
   }
   else {
   // remove that disabled attribute
   }
});

您可以尝试创建自己的指令,但是
ng disabled
是正确的方法,正如JinsPeter所说

是的,在编写这些
按钮时,您必须在任何地方编写
ng disabled
,因此这是正确的方法。它是否冗余。

ng disabled
最好<代码>$scope.disableActions
可以使用多个位置并影响所有位置


OpenClick
第二次点击
第三次点击
启用/禁用

对于这种情况,我建议您做的是,只需将所有按钮放在单个
字段集
中,并在该
字段集
上应用
ng disabled
,如果
ng disabled
表达式的计算结果为
true

<fieldset ng-disabled="disableActions">
   <button type="button" ng-click="ignoreAndRedisplay()">OpenClick</button>
   <button type="button" >Some Other button</button>
   <button type="button" >One more button</button>
   ...
</fieldset>

在所有链接上禁用
ng
会降低性能问题,但这是正确的方法。但是,如果您不想对UI进行一些更改,可以在控制器中进行

$scope.ignoreAndRedisplay = function () {
    if ($scope.disableActions) return;
    // your code here
}

那是开箱即用的+1:)@PankajParkar它适用于除内部元素之外的所有元素tag@RaviUbana你这么说是什么意思,能不能请你创造一个plunker或什么的?是的@PankajParkar请看一看@RaviUbana你不了解核心问题。。无法禁用定位标记。。那么fieldset如何为您做到这一点,您需要做一些手工工作。。您可以为相同的
字段集[disabled]a{pointer events:none;}
添加CSS规则,以解决您的问题。。
$scope.ignoreAndRedisplay = function () {
    if ($scope.disableActions) return;
    // your code here
}