在ng-disabled表达式中的函数调用 - 允许?

时间:2014-01-08 20:00:09

标签: javascript angularjs

我正在使用ng-disabled使表单的提交按钮无法点击,除非所有表单验证都是好的。

当我使用

时,我的工作正常
<button ng-disabled="form.$invalid">OK</button>

但是,还有另一项检查我希望它完成,这是在控制器函数foo()中(在控制器定义中的$ scope上发布)。我已经确认foo会返回我想要的东西,但是当我有

<button ng-disabled="form.$invalid && foo()">OK</button>

按钮永远不会被禁用。我究竟做错了什么?这里不允许函数调用吗?

3 个答案:

答案 0 :(得分:1)

每当我得到奇怪的结果时,我要做的第一件事就是确保任何条件逻辑都是正确的。一个非常常见的是混淆&amp;&amp; ||

如果您没有在控制台中看到错误,那么该函数可能会被调用,而问题是您的逻辑中的错误。

答案 1 :(得分:0)

如果该功能真的属于控制器功能,那么您需要通过controllerAs公开您的控制器并通过公开的方法(即路线中的controllerAs: 'ctrl')和ctrl.foo()进行调用。在您的模板中代替),或者您需要在$scope上发布此方法。

答案 2 :(得分:0)

我遇到了类似的问题,有点丢失了我脑子里的逻辑,一直以为我应该使用&&,但实际上逻辑应该是||, e.g。

ng-disabled="!privilegeReviews.length || checkSaveRevertValidity()