javascript - 使用 AngularJS 禁用/启用 html 元素

标签 javascript html angularjs

我开始学习用于 Web 应用程序的 AngularJS,但我在理解框架的工作流程方面遇到了问题。

我有 2 个下拉菜单:

<select class='selectorDropdown' ng-model='selectedElement' ng-change='selectedElementChange()'>
    <option value='0' disabled selected>Option0
    <option value='1'>Option1
    <option value='2'>Option2
</select>

<select class='selectorDropdown' id='selector2' disabled>
    <option value='3'>Option1
    <option value='4'>Option2
</select>

我希望仅在第一个下拉列表中选择了 Option0 以外的另一个选项后才启用第二个下拉列表。这是我的 Javascript 代码:

$scope.selectedElementChange = function() {
    document.getElementById('selector2').disabled = true;
}

到目前为止,它看起来像常规的 Javascript(并且我正在操作 DOM),所以我猜这并不是 AngularJS 真正的使用方式。有人可以帮助我理解使用 AngularJS 执行此操作的“正确”方法吗?

最佳答案

像这样的东西应该可以工作,而不需要编写一行 JavaScript:

<select class='selectorDropdown' id='selector2' ng-disabled='selectedElement == "0"'>
    <option value='3'>Option1
    <option value='4'>Option2
</select>

您也不需要ng-change。当第一个选择器更改时,Angular 负责更新模型,然后运行摘要循环来更新其他任何内容。

您还需要在某处初始化selectedElement; Angular 不会从您在 Option0 元素上编写 selected 的事实中获取其值。最简洁的方法是在 Controller 中执行此操作:

$scope.selectedElement = "0";

快速但肮脏的方法是ng-init:

<select ... ng-init='selectedElement = "0"'>

Plunk.

关于javascript - 使用 AngularJS 禁用/启用 html 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37431060/

相关文章:

如果选中另一个复选框,Javascript 将选中一个复选框

javascript - 带 var 的 For 循环

jQuery 警告框固定位置问题?

html - 如何使用ngclass在angularjs中单击时使用css类切换到另一个 View

javascript - Angularjs datepicker popup bootstrap-ui 在 View 中不起作用

javascript - 将 MySQL 查询结果转换为分层数据 - D3

javascript - 在 JavaScript 单元测试中重用代码的最佳方法

jquery - 音频标签、jQuery 和 currentTime 的问题

php - 无法从AWS EC2中的phpmyadmin获取数据

javascript - 如何为每次迭代在angularjs中添加一个带有colspan的td?