在Set上使用ngrepeat

时间:2016-07-20 17:14:37

标签: angularjs angularjs-ng-repeat ng-repeat

我有vm.s = new Set([1,2,3])

如何在ngRepeat上使用s而不将其转换为数组?

我试过了

<option ng-repeat="o in vm.s">{{o}}</option>
<option ng-repeat="o in vm.s.values()">{{o}}</option>
<option ng-repeat="o in Array.from(vm.s)">{{o}}</option>

3 个答案:

答案 0 :(得分:4)

Set()是EMCAScript 6的一项功能。 Angular 1.x不直接以这种方式支持ES6功能。 Array.from(vm.s)应该适合你。

答案 1 :(得分:0)

您必须使用以下命令在控制器上将Set转换为数组:

 Array.from(vm.s.values())

答案 2 :(得分:0)

试试这个,它的工作原理,你必须使用vm.arr = Array.from(vm.s);

将set转换为数组

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

app.controller('MainCtrl', function($scope) {
  var vm = this;
  vm.arr = [];
  vm.s = new Set([1,2,3]);
   vm.arr = Array.from(vm.s);
  console.log(vm.arr);
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>


  <body ng-app="plunker" ng-controller="MainCtrl as main">
   <ul>
    <li ng-repeat="o in main.arr">{{o}}</li>
     </ul>
  </body>