在AngularJS中全局设置所有选择框到第一个可用选项

时间:2016-01-07 21:21:47

标签: angularjs

我的应用程序中有很多选择框,由数据列表生成并分配给各种ng模型。

我想将ng-model值设置为应用程序中全局选择输入的第一个可用选项(尊重过滤器)。

例如,像这样的选择输入:

<select ng-model="entry.employee">
  <option ng-value="employee.name" ng-repeat="employee in employees | filter:active">{{employee.name}}</option>
</select>

entry.employee ng-model默认为null,我需要每个选择框永远不为null,但总是默认选择select输入的第一个有效选项。

它也需要是全局的,并且足够通用,可以处理任何类型的选择输入。

以下是数据:

$scope.employees= [
        {'name':'Bill'},
        {'name':'Frank'},
        {'name':'Ted'},
    ];

1 个答案:

答案 0 :(得分:0)

不要在选项元素上使用ng-repeat,而是直接在select标记上使用ng-option。

例如

<select class="form-control" ng-options="item.name for item in employees track by item.id" ng-model="selectedItem"></select>

在您的控制器中使用:

$scope.selectedItem=$scope.employees[0];

你的对象就像:

$scope.employees= [
    {id:'1','name':'Bill'},
    {id:'2','name':'Frank'},
    {id:'3','name':'Ted'},
];

在这种情况下,您可以选择标签为&#39; n&#39;数字,但只要你想让你的模型成为第一个,只需用你对象中的第一个元素初始化它。 使用ng-option也是一件好事,无论何时你想在运行时更改select元素的值,你只需要更新 selectedItem 元素。

希望这可以解析您的查询