有哪些 Angular 方法可以从 <select> 的数据中动态生成需要值和文本的 <option> 元素?

What are the Angular ways to generate <option> elements that requires value and text dynamically from data for <select>?

我想使用angular表达式生成一个选项列表来实现

<select id="sel">
    <option value="1">value1</option>
    <option value="2">value2</option>
    <option value="3">value3</option>
</select>

在选择时它将return一个对象或一个简单的值。

我有来自服务器的数据类似于 这个

["string1", "string2", "string3"]

有时这个

[
   {val: '01', Text: 'struct1'},
   {val: '02', Text: 'struct2'},
   {val: '03', Text: 'struct3'}
]
 

有时

[
   {id: '01', obj: {grp: 'A', Text: 'struct1'}},
   {id: '02', obj: {grp: 'A', Text: 'struct2'}},
   {id: '03', obj: {grp: 'A', Text: 'struct3'}}
];

为了用一行代码完成从数据对象到select可用对象(选项)列表的平滑转换,我们需要了解angularJS如何构造它们的模板!!这是==>

XXX as YYY for ZZZ in ZZZZ
  1. XXX 是您从选项中选择的最终值
  2. YYY 是你的价值文本
  3. ZZZ 是您的 ZZZZ 项目中的一项

从上面你可以得到用户点击 selection 的各种结果。整个代码就是这样

HTML==>

<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="myCtrl">

<pre>itm for itm in stringArray : Result==> {{L1}}</pre>
<select ng-model="L1" ng-options="itm for itm in stringArray">
<option value="">the strings</option>
</select>
<hr/>

<pre>itm as itm.Text for itm in structArray : Result==> {{L2}}</pre>
<select ng-model="L2" ng-options="itm as itm.Text for itm in structArray">
<option value="">the structs</option>
</select>
<hr/>

<pre>itm.val as itm.Text for itm in structArray : Result==> {{L3}}</pre>
<select ng-model="L3" ng-options="itm.val as itm.Text for itm in structArray">
<option value="">the structs</option>
</select>
<hr/>

<pre>itm as itm.Text for itm in structArray track by itm.val : Result==> {{L4 | json}} </pre>
<select ng-model="L4" ng-options="itm as itm.Text for itm in structArray track by itm.val">
<option value="">the structs</option>
</select>
<hr/>

</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.stringArray = ["string1", "string2", "string3"];
    $scope.structArray = 
    [
       {val: '01', Text: 'struct1'},
       {val: '02', Text: 'struct2'},
       {val: '03', Text: 'struct3'},
    ];
  
});
</script>
</body>
</html>

请注意,在从 in-line 模板语句部署对象后,我还在选项列表中插入了一个空白选项!

请注意,您可以从 select 更改事件中 return json 对象。这意味着,您可以期待用户从 select 列表中的一个选项中选择一个非常强大的对象!