当数组为空时,角度禁用按钮

时间:2014-08-28 17:41:27

标签: angularjs

也许我只是没有直接思考。我可以使用某种形式的角度ng-click和ng-disabled来启用/禁用通过我的控制器的链接吗?

Fiddle here

see fiddle...

'做东西'除非至少有一个'检查,也不应采取任何行动。当然,一旦检查了Thing,按钮应该激活。

我尝试解决这个问题的时间越多,它就会越复杂,我无法帮助,但我认为我忽略了一些明显的事情。

4 个答案:

答案 0 :(得分:3)

因为INPUT的ng禁用。

此处使用ng-class是fiddle

中的一个示例
  <a ng-class="{'disabled': things.length==0}" ng-click="doStuff()">Do stuff to Thing(s)</a>

 $scope.doStuff = function(){
        if($scope.things.length==0) return;
        console.log('Stuff has been done to things');
    }

答案 1 :(得分:1)

首先,如果你想用ng-disabled做一些事情,你需要删除测试周围的卷曲。通常,您不需要将它们与原生角度指令一起使用(ng-href ...除外)

之后,ng-disabled不会阻止ng-click,如果它不在按钮上,所以你需要使用一个按钮或在ng-click中使用这样的语法:

ng-click="condition && doSomething()"

这是一个有效的例子,希望它能帮到你

http://jsfiddle.net/dxquye40/8/

答案 2 :(得分:0)

在这篇文章中查看ryeballer的回答:Angular JS + Button should be enabled if at least one checkbox is checked how To do it?

提供的plunker ryeballer应该通过在ng-disabled指令中翻转条件进行修改:

ng-disabled="!isChecked()"

这是一个经过调整的弹药:   http://plnkr.co/edit/N0az5UeVH0VRlGK1ZwvC?p=preview

这似乎与您想要做的非常相似。

请记住,ng-disabled指令似乎不会影响锚标记。所以,如果可以,请使用其他东西(例如按钮元素)。 另外,请注意您的初始解决方案如何不利用Angulars数据绑定。不要在复选框上设置ng-click事件,只需通过ng-model指令告诉Angular这些数据是什么。让Angular处理你在setThing()方法中得到的东西。

答案 3 :(得分:-1)

如果您被允许使用jQuery,那么您可以使用.removeClass(),就像我在这里使用您的脚本一样。

http://jsfiddle.net/kirdua/dxquye40/21/

code