在angularjs中,我们有ng-disabled指令,为什么框架不提供ng-enabled指令,因为我们有ng-show和ng-hide

Avi*_*nki 58 javascript angularjs

在AngularJs ng-enabled指令中没有提供.是否有任何正当理由不在框架中提供该指令,因为我们同时拥有这两个指令ng-show以及ng-hide何时可以ng-hide用来实现我们的目标.

检查是不是很好 ng-enabled="attribute.value === true"

代替 ng-disabled="!(attribute.value === true)"

它会增加代码的可读性.

dfs*_*fsq 56

ngEnabledAngular中没有指令的原因是相当语义 - 在HTML规范中根本没有与之对应的东西.同时,已经存在ngDisableddisabled属性一起使用的指令.出于同样的原因,没有ngUnchecked指令,因为已经ngChecked有设置/删除checked属性.

现在,合理的问题:为什么我们有两个ngShowngHide呢?嗯,这只是为了方便,在这种情况下,我猜,因为既有ngShow并且ngHide不比ngShow单独更令人困惑,但与此同时,两者都非常方便.

  • 我已经读过某个地方(不记得哪里),Angular开发人员认为同时使用ng-show和ng-hide是一个错误,因为它会使实现者和用户的逻辑更难.如果你在同一个元素上使用ng-show和ng-hide并且它们都评估为"true",应该应用哪一个怎么办?当然,你不应该那样做,但是图书馆不应该让你容易犯这些错误. (19认同)
  • 答案很有道理,但我个人遵循'肯定'布尔命名约定,避免双重否定.将负名称布尔值设置为false的ngHide应该会导致一些头部划痕.我很清楚这是个人喜好. (6认同)
  • 我同意这一点可能会造成混淆。如果由我决定,我将只运送`ngHide`。 (2认同)

rmu*_*ler 11

我根本没有错过启用ng的指令,我认为它对框架几乎没有任何作用.

默认情况下启用输入,HTML输入也没有启用属性,只是禁用.angular指令设置HTML禁用属性,但在评估表达式之后.

你可以写

NG-禁用= "!attribute.value"

我觉得它很可读.

  • 比较句子"当它不是1,2或3时禁用的东西"和"当它的1,2或3时启用的东西".解析第一个需要更多的脑力,而第二个只需点击. (10认同)

Dav*_*mon 5

TLDR:改用启用角度的

核心团队在此评论中表达了他们的观点:https : //github.com/angular/angular.js/issues/1252#issuecomment-49261373

他们不会仅仅因为它具有许多+ 1-来满足功能要求,以保持核心膨胀。

但是,如果您仍然希望具有启用ng的功能,那么btford会为您创建这个方便的小模块:https : //github.com/btford/angular-enabled