NG-重复="(键,VAL)"不适用于Angular中的表

时间:2018-01-22 14:18:36

标签: javascript angularjs mean-stack

我正在研究MEAN堆栈应用程序。我从数据库中获取值,在我的控制器中使用$scope.varMap = new Map();创建一个Map,并尝试使用以下代码在我的角度UI中显示varMap的键值:

这就是我在控制器中设置值的方法:

 $scope.varMap.set($scope.mappings.name,$scope.mappings.shortname);

这是angular:

的代码片段
   <table class="table table-bordered table-list">
        <thead>
           <tr>
             <th>KEY</th>
             <th>VALUE</th>
           </tr> 
        </thead>
        <tbody>
           <tr ng-repeat="(key,val) in varMap">
              <td>{{key}}</td>
              <td>{{val}}</td>
           </tr>
        </tbody>
</table>

但遗憾的是ng-repeat没有显示任何内容。我尝试在控制器的控制台中打印地图值并打印正确的值。

     for (var [key, value] of $scope.varMap) {
        console.log(key + ' = ' + value);
     }

我尝试了链接&amp; stackoverflow上可用的答案,但没有成功。请帮忙。

1 个答案:

答案 0 :(得分:3)

由于ng-repeat不支持地图迭代,您可以使用自定义过滤器 fromMap ,如下所示:

app.filter('fromMap', function() {
  return function(input) {
   var out = {};
   input.forEach((v, k) => out[k] = v);
   return out;
 }
});

和你的控制器:

app.controller('MainCtrl', function($scope) { 
  $scope.data = new Map(); 
  $scope.data.set("prop1","as"); 
  $scope.data.set("prop2","ssas"); 
});

和你的HTML:

  <body ng-controller="MainCtrl">
   <table>
    <tr ng-repeat="(key, val) in data | fromMap"><td>{{key}}</td><td>{{val}}</td></tr>
   </table>
  </body>

这是一个有效的demo