给定一个有条件禁用的文本输入字段,使用ng-disabled="truthy_scope_variable"
, AngularJS 禁用该字段第一次范围变量被伪造,但不会在后续更改中启用它。结果,该字段保持禁用状态。我只能假设出了问题,但控制台日志是空的。
真实范围变量与单选按钮模型相关联,我什至可以$watch
它改变了,但是输入字段的ng-disabled
没有按预期工作。我已经尝试手动调用$apply
,但看起来 Angular 正在触发 DOM 更改。
在控制器中:
$scope.new_account = true
单选按钮:
<input type="radio" ng-model="new_account" name="register"
id="radio_new_account" value="true" />
<input type="radio" ng-model="new_account" name="register"
id="radio_existing_account" value="false" />
有条件地禁用输入字段:
<input type="password" ng-disabled="new_account" id="login-password"
name="password" ng-model="password" />
如果我最初设置$scope.new_account = false
,该字段被禁用,但从未重新启用。为什么会发生这种情况?
这是因为 HTML 属性始终是字符串,因此在您的示例中 ngDisabled 在两种情况下(“true”或“false”)评估字符串。
为了补救,您应该将模型与 ngDisabled 中的字符串值进行比较:
ng-disabled="new_account == 'false'"
...或使用复选框来获取实际的布尔值:
<input type="checkbox" ng-model="existing_account" name="register" id="checkbox_new_account" />
<label for="checkbox_new_account">Is Existing Account</label>
Password:
<input type="password" ng-disabled="existing_account" name="password" ng-model="password" />
这是一个PLNKR http://plnkr.co/edit/KmQXXEJBEVjsAvsFDl0C?p=preview与这两种解决方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)