ng-options用法详解

原文地址:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/ng-options-usage/

ng-options属性可以在表达式中使用数组或对象来自动生成一个select中的option列表。ng-options与ng-repeat很相似,很多时候可以用ng-repeat来代替ng-options。但是ng-options提供了一些好处,例如减少内存提高速度,以及提供选择框的选项来让用户选择。当select中一个选项被选择,该选项将会被绑定到ng-model。如果你想设一个默认值,可以像这样:$scope.selected = $scope.collection[3]

之前一直在用ng-repeat就见到过track by,没有去了解它的用法,这次了解了一下。track by主要是防止值有重复,angularjs会报错。因为angularjs需要一个唯一值来与生成的dom绑定,以方便追踪数据。例如:items=[“a”,“a”,“b”],这样ng-repeat=“item in items”就会出错,而用ng-repeat=“(key,value) in items track by key”就不会出现错误了。

ng-options一般有以下用法:

对于数组:

  •  label for value in array
  •  select as label for value in array
  •  label group by group for value in array
  •  label disable when disable for value in array
  •  label group by group for value in array track by trackexpr
  •  label disable when disable for value in array track by trackexpr
  •  label for value in array | orderBy:orderexpr track by trackexpr(for including a filter with track by)
  • 对于对象:
  •  label for (key , value) in object
  •  select as label for (key ,value) in object
  •  label group by group for (key,value) in object
  •  label disable when disable for (key, value) in object
  •  select as label group by group for(key, value) in object
  •  select as label disable when disable for (key, value) in object

一个简单的例子:

 

<script>
angular.module('selectExample', [])
  .controller('ExampleController', ['$scope', function($scope) {
    $scope.colors = [
      {name:'black', shade:'dark'},
      {name:'white', shade:'light', notAnOption: true},
      {name:'red', shade:'dark'},
      {name:'blue', shade:'dark', notAnOption: true},
      {name:'yellow', shade:'light', notAnOption: false}
    ];
    $scope.myColor = $scope.colors[2]; // red
  }]);
</script>
<div ng-controller="ExampleController">
  <ul>
    <li ng-repeat="color in colors">
      <label>Name: <input ng-model="color.name"></label>
      <label><input type="checkbox" ng-model="color.notAnOption"> Disabled?</label>
      <button ng-click="colors.splice($index, 1)" aria-label="Remove">X</button>
    </li>
    <li>
      <button ng-click="colors.push({})">add</button>
    </li>
  </ul>
  <hr/>
  <label>Color (null not allowed):
    <select ng-model="myColor" ng-options="color.name for color in colors"></select>
  </label><br/>
  <label>Color (null allowed):
  <span  class="nullable">
    <select ng-model="myColor" ng-options="color.name for color in colors">
      <option value="">-- choose color --</option>
    </select>
  </span></label><br/>
 
  <label>Color grouped by shade:
    <select ng-model="myColor" ng-options="color.name group by color.shade for color in colors">
    </select>
  </label><br/>
 
  <label>Color grouped by shade, with some disabled:
    <select ng-model="myColor"
          ng-options="color.name group by color.shade disable when color.notAnOption for color in colors">
    </select>
  </label><br/>
 
  Select <button ng-click="myColor = { name:'not in list', shade: 'other' }">bogus</button>.
  <br/>
  <hr/>
  Currently selected: {{ {selected_color:myColor} }}
  <div style="border:solid 1px black; height:20px"
       ng-style="{'background-color':myColor.name}">
  </div>
</div>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`ng-options` 是 AngularJS 中用来生成下拉框选项的指令,其语法比较复杂,但是非常灵活,可以满足各种需求。 以下是 `ng-options` 的语法: ``` ng-options="expression for item in collection track by trackexpr" ``` 其中,`expression` 是一个 AngularJS 表达式,用来定义下拉框选项的显示文本。`item` 是一个临时变量,用来循环遍历 `collection` 中的元素。`collection` 是一个数组或对象,用来定义下拉框的选项。 `trackexpr` 是一个可选的表达式,用来跟踪下拉框选项的值。如果没有指定 `trackexpr`,则默认使用 `item` 作为选项的值。 以下是一些常见的 `ng-options` 用法示例: 1. 从数组中生成选项: ```html <select ng-model="selectedItem" ng-options="item for item in items"></select> ``` 在上面的代码中,我们将 `items` 数组中的每个元素作为下拉框的选项,同时使用 `ng-model` 指令来绑定选中值。 2. 从对象中生成选项: ```html <select ng-model="selectedItem" ng-options="key as value for (key, value) in items"></select> ``` 在上面的代码中,我们将 `items` 对象中的每个键值对作为下拉框的选项,`key` 作为选项的值,`value` 作为选项的文本。 3. 从数组中生成选项,并指定选项的文本和值: ```html <select ng-model="selectedItem" ng-options="item.id as item.name for item in items"></select> ``` 在上面的代码中,我们将 `items` 数组中的每个元素作为下拉框的选项,但是指定了选项的显示文本为 `item.name`,选项的值为 `item.id`。 4. 使用 `track by` 来跟踪选项的值: ```html <select ng-model="selectedItem" ng-options="item.id as item.name for item in items track by item.id"></select> ``` 在上面的代码中,我们使用 `track by` 来跟踪选项的值,这样可以避免在选项发生变化时引起性能问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值