You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AngularJS中如何根据下拉框选中值隐藏指定div

存在的问题

  • 条件判断误用赋值运算符:if (value.studentType = "angularjs") 里的=是赋值操作,不是比较操作,会直接把studentType强制修改为angularjs,判断逻辑永远成立,应该用===做全等比较。
  • 布尔值错误写为字符串:你把$scope.studentType赋值为字符串"false",在JS里非空字符串属于真值,ng-if判断时会认为条件成立,不会隐藏元素,应该使用不带引号的布尔值false。
  • 逻辑冲突:下拉框的ng-model直接绑定了studentType,如果直接修改这个值,会导致下拉框的选中状态被篡改,和用户选择的内容不一致,应该单独声明一个控制显隐的变量。

修正方案

模板代码

<div>
    <p>Course Type</p>
    <div>
        <select name="student-type" id="student-type" class="icon-select-down" ng-model="studentType" ng-change="getOption()">
            <option value="java" selected>Java</option>
            <option value="angularjs">Angular js</option>
            <option value="reactJs">React js</option>
        </select> 
    </div>
</div>

<div ng-if="showAttendence">
  <p>Attendence Days</p>
  <div class="slice-item">
    <input type="text" class="input input-text" ng-model="attendenceDays" required validate-on="blur" ng-pattern="/^([1-9]|10)$/" invalid-message="'You must enter number between 1 to 25'" />
  </div>
</div>

控制器代码

// 初始化默认显示,因为默认选中Java
$scope.showAttendence = true;

$scope.getOption = function() {
    // 选中angularjs时隐藏,其他情况显示
    $scope.showAttendence = $scope.studentType !== 'angularjs';
};

如果你的显隐规则有调整,修改getOption里的判断条件即可。


内容的提问来源于stack exchange,提问作者Milan Kumar Giri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 22:18:01