2016-07-20 24 views
1

Ich habe ein vm.s = new Set([1,2,3])Verwenden ngrepeat auf Set

wie kann ich ngRepeat auf s verwenden, ohne es zu Array-Format konvertieren?

ich versucht habe

<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> 

Antwort

2

Set() ist eine Funktion von EMCAScript 6. Angular 1.x unterstützt ES6-Funktionen nicht direkt auf diese Weise. Array.from(vm.s) sollte für Sie arbeiten.

+1

korrekt, und ich denke, es ist der gleiche Grund, dass ich nicht 'Array.from (someSetObject)' in html (die 3. Option in meiner Frage) – pledez

+0

@pledez Angular nicht schreiben globale Variablen in eckigen Ausdruck (aufgrund ihrer dummen, völlig unsicheren "Sandbox"). Sie können '[] .constructor.from (vm.s)' schreiben, wenn es Ihnen nichts ausmacht. ansonsten musste dies im Controller gemacht werden ... – tsh

0

Sie werden am Controller Array Set konvertieren mit:

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

Versuchen Sie, diese, seine Arbeits, Sie müssen Array konvertieren gesetzt verwenden, vm.arr = Array.from(vm.s);

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>