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

如何默认选中从JSON填充的Angular多选下拉框所有选项?

AngularJS多选下拉框默认全选解决方案

问题场景

使用AngularJS通过JSON数据填充多选下拉框,代码如下:

<select size="2" id="inst_all" style="width:200px;" multiple ng-multiple="true" ng-model="selectedCountries"
ng-options="sort.Institute as sort.Institute for sort in products | unique : 'Institute'">
</select>

尝试用jQuery直接设置选项选中状态,但未生效:

$('#inst_all option').prop('selected', true);

原因分析

AngularJS采用数据驱动视图的机制,视图状态由绑定的模型变量(此处为selectedCountries)控制。直接用jQuery操作DOM修改option的选中状态,AngularJS无法感知该变化,后续的digest循环可能会重置视图状态,导致设置失效。

解决方案

直接修改绑定的模型变量selectedCountries,将其设置为所有去重后的Institute值数组即可:

方法1:控制器中处理(推荐)

利用AngularJS的unique过滤器提取去重后的机构列表,再映射出Institute字段值赋值给模型:

// 示例控制器代码
app.controller('YourController', function($scope, $filter) {
    // 你的JSON数据源
    $scope.products = [
        { Institute: "机构A" },
        { Institute: "机构B" },
        { Institute: "机构A" },
        { Institute: "机构C" }
    ];

    // 获取去重后的机构数组
    const uniqueInstitutes = $filter('unique')($scope.products, 'Institute');
    // 赋值给模型实现默认全选
    $scope.selectedCountries = uniqueInstitutes.map(item => item.Institute);
});

方法2:使用ng-init(适合简单场景)

直接在模板中通过ng-init初始化模型值:

<select size="2" id="inst_all" style="width:200px;" multiple ng-multiple="true" 
        ng-model="selectedCountries"
        ng-options="sort.Institute as sort.Institute for sort in products | unique : 'Institute'"
        ng-init="selectedCountries = (products | unique : 'Institute').map(item => item.Institute)">
</select>

内容的提问来源于stack exchange,提问作者Maya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:20:31