也许我只是没有直接思考。我可以使用某种形式的角度ng-click和ng-disabled来启用/禁用通过我的控制器的链接吗?
see fiddle...
'做东西'除非至少有一个'检查,也不应采取任何行动。当然,一旦检查了Thing,按钮应该激活。
我尝试解决这个问题的时间越多,它就会越复杂,我无法帮助,但我认为我忽略了一些明显的事情。
答案 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()"
这是一个有效的例子,希望它能帮到你
答案 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)