我在控制器中有一个条件。如果条件返回true,那么我必须禁用所有链接和ng-click
s
我们如何做: -
Controller : $scope.disableActions = true;
在HTML中
<button type="button" ng-click="ignoreAndRedisplay()" ng-disabled="disableActions">OpenClick</button>
通过这样做,我必须在任何地方写ng-disabled="disableActions"
,这将是多余的,我们如何才能为n
个按钮和链接改进这一点?
答案 0 :(得分:8)
我建议你为这些案例做些什么,只需将所有按钮放在单fieldset
内,然后将ng-disabled
应用于fieldset
,其中的控件就在那里如果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>
在评论中,您要求OP禁用anchor
标记。基本上你不能禁用anchor
标签。你可以尝试下面的黑客来使它工作。
fieldset[disabled] a {
pointer-events: none;
}
答案 1 :(得分:1)
ng-disabled
这是正确的方法。它是否具有还原性。
如果你有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
}
});
答案 2 :(得分:1)
你可以尝试创建自己的指令,但ng-disabled
是正确的方法,正如JinsPeter所说
答案 3 :(得分:1)
是的,你必须在编写ng-disabled
时随处写buttons
所以这是正确的方法。这是多余的。
答案 4 :(得分:0)
ng-disabled
是最好的。 $scope.disableActions
可以使用多个地方并影响所有地方。
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.3/angular.min.js"></script>
<body ng-app ng-init="disableActions = false">
<button ng-disabled="!disableActions">OpenClick</button>
<button ng-disabled="!disableActions">Second Click</button>
<button ng-disabled="!disableActions">Third Click</button>
<button type="button" ng-click="disableActions = !disableActions">Enable/Disable</button>
</body>
答案 5 :(得分:0)
在所有链接上放置ng-disabled
会导致性能问题,但这是正确的方法。但是,如果您不想要一些UI更改,您可以在控制器中正确执行。
$scope.ignoreAndRedisplay = function () {
if ($scope.disableActions) return;
// your code here
}