Angular.js - 仅当未禁用其他元素时,才使用ng-show显示元素

mrj*_*rjf 1 javascript angularjs angularjs-directive

我有一个元素,我只想在未禁用另一个表单元素时显示.

<input ng-model="myModel">
Run Code Online (Sandbox Code Playgroud)

以下工作均不属于:

<div ng-show="myModel">
Run Code Online (Sandbox Code Playgroud)

这将显示输入是否被禁用,只要它已经设置了过去的值.

<div ng-show="myModel.enabled">
<div ng-show="!myModel.disabled">
Run Code Online (Sandbox Code Playgroud)

那些道具似乎并不存在.

<div ng-show='!angular.element(po.vendor__contact).prop("disabled")'>
Run Code Online (Sandbox Code Playgroud)

认为如果它被禁用,可能会问jQuery,但事实并非如此.

有没有办法在Angular指令中引用元素是否启用?可以通过询问jQuery来完成吗?

谢谢!

小提琴:http://jsfiddle.net/ADukg/3197/

plu*_*us- 5

我认为你没有正确使用Angular.您不应该基于另一个元素的状态来确定元素的可见性.

两个元素都应该取决于模型:

<input ng-model="myModel" ng-disabled="isDisabled">
<div ng-hide="isDisabled">
Run Code Online (Sandbox Code Playgroud)

基本上,视图反映了模型,不检查DOM,也不使用jQuery.你也可以使用ng-hide而不是ng-show和!

编辑:http://jsfiddle.net/ADukg/3198/

  • 谢谢,我知道如何使用基于另一个模型的ng-show/hide.问题是,在这种特殊情况下,关于是否应该显示我的div的唯一有用的信息是是否启用了某些输入.因此,我只想了解如何编写一个检查另一个元素的启用/禁用状态的指令(虽然我很欣赏关于在模型中而不是在表单元素中保持状态的建议,这绝对是合理的建议.) (2认同)