javascript - AngularJS 条件 ng-disabled 不重新启用

标签 javascript angularjs angularjs-scope

给定一个使用 ng-disabled="truthy_scope_variable" 的有条件禁用的文本输入字段,AngularJS 会在第一次范围变量被伪造时禁用该字段,但不会启用它在随后的变化。因此,该字段保持禁用状态。我只能假设出了什么问题,但控制台日志是空的。

truthy 范围变量绑定(bind)到单选按钮模型,我什至可以 $watch 它改变,但输入字段的 ng-disabled 没有按预期工作。我已手动尝试调用 $apply,但看起来 Angular 正在触发 DOM 更改。

在 Controller 中:

$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'"

...或使用复选框,获取实际的 bool 值:

<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两种解决方案。

关于javascript - AngularJS 条件 ng-disabled 不重新启用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17855304/

相关文章:

javascript - 欧拉项目 23,给出的结果是 64,高于应有的结果

javascript - Chart.js 的新扩展语法是什么?

AngularJS - 在指令范围内设置变量

javascript - 尝试通过指令更新模型但无法添加类

javascript - 模态如何从图像中获取数据?

javascript - CSS悬停以展开输入框并暂停以允许输入

javascript - AngularJS $注入(inject)器: unknown provider

javascript - Angular.js : change internal view of a template

angularjs - 如果新项目不在列表中,则将其添加到预输入中

javascript - 动态更新和检查对象数组