【问题标题】:Angular 1.3 - Add Ids to option tags inside ng-optionsAngular 1.3 - 将 ID 添加到 ng-options 中的选项标签
【发布时间】:2017-04-13 01:20:05
【问题描述】:

我正在使用 Angular 1.3.8。我有一个使用数组作为 ngOptions 选项的选择列表,语法包括基本的track by 表达式。

ng-options 创建选项标签时,我需要能够向选项的 ID 属性添加唯一值(从当前 colordescription 到当前 <option> 元素。有没有有什么办法吗?如果不行,我可以用ng-repeat吗?我试过ng-repeat没有成功。

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {

  $scope.colors = [{
    "code": "GR",
    "description": "Green"
  }, {
    "code": "RE",
    "description": "Red"
  }, {
    "code": "CY",
    "description": "Cyan"
  }, {
    "code": "MG",
    "description": "Magenta"
  }, {
    "code": "BL",
    "description": "Blue"
  }];

  // Preselect CYAN as default value
  $scope.data = {
    colorType: $scope.colors[2]
  }

});
<script src="https://code.angularjs.org/1.3.8/angular.min.js"></script>
<div ng-app="plunker">
  <div ng-controller="MainCtrl">
    <strong>ng-options: </strong><select name="color" id="colors" ng-model="data.colorType" ng-options="color as color.description for color in colors track by color.code"></select>
<strong>ng-repeat: </strong><select name="color" id="colors" ng-model="data.colorType">
	<option ng-repeat="color in colors" value="{{color}}">{{color.description}}</option>
</select>
    <pre>{{ data | json }}</pre>
  </div>
</div>

【问题讨论】:

  • 为什么在 Angular 应用程序中需要 &lt;option&gt; 上的 ID?
  • @charlietfl QA 测试人员需要它:\

标签: javascript html angularjs angularjs-ng-repeat angularjs-ng-options


【解决方案1】:

一种选择是使用ngRepeat,语法为(key, value) in expression

(key, value) in expression 其中keyvalue 可以是任何用户定义的标识符,expression 是提供要枚举的集合的范围表达式。

使用该语法,可以添加键(例如index):

<option ng-repeat="(index, color) in colors" value="{{color}}" id="option_{{index}}">{{color.description}}</option>

请看下面的演示。检查选项应显示 id 属性集(例如 option_0option_1 等)。

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {

  $scope.colors = [{
    "code": "GR",
    "description": "Green"
  }, {
    "code": "RE",
    "description": "Red"
  }, {
    "code": "CY",
    "description": "Cyan"
  }, {
    "code": "MG",
    "description": "Magenta"
  }, {
    "code": "BL",
    "description": "Blue"
  }];

  // Preselect CYAN as default value
  $scope.data = {
    colorType: $scope.colors[2]
  }

});
<script src="https://code.angularjs.org/1.3.8/angular.min.js"></script>
<div ng-app="plunker">
  <div ng-controller="MainCtrl">        
<strong>ng-repeat: </strong><select name="color" id="colors" ng-model="data.colorType">
	<option ng-repeat="(index, color) in colors" value="{{color}}" id="option_{{index}}">{{color.description}}</option>
</select>
    <pre>{{ data | json }}</pre>
  </div>
</div>

【讨论】:

  • 哦,我明白了。但是现在,"colorType": "{\"code\":\"CY\",\"description\":\"Cyan\"}" 没有将默认设置为cyan
  • 发现,我可以使用ng-selected指令了。
猜你喜欢
  • 2017-03-31
  • 1970-01-01
  • 2016-03-24
  • 1970-01-01
  • 2015-06-30
  • 2014-10-12
  • 2014-11-30
  • 2014-12-12
  • 1970-01-01
相关资源
最近更新 更多