当键具有特殊字符($)时,ng-repeat不使用键值对

时间:2017-01-17 08:37:29

标签: angularjs

当密钥具有特殊字符($)

时,

ng-repeat不使用键值对

示例

<div ng-repeat="(key, value) in values">{{key}}</div>

其中值等于

$scope.values = {
      $firstName:"Kusum";
      lastName:"Kumari"
}

它打印lastNAme,但$firstName失败。

4 个答案:

答案 0 :(得分:2)

一样访问它
{{Obj["$firstName"]}}

注意double quotes

答案 1 :(得分:1)

这是预期的,stated in the docs

  

ngRepeat会默默地忽略以$开头的对象键,因为   它是Angular用于公共($)和私有($$)的前缀   属性。

您可以更改控制器中以$开头的属性。

for (var property in $scope.values) {
    if ($scope.values.hasOwnProperty(property)) {
        if(property[0] === '$'){
          $scope.values["_"+property] = $scope.values[property]
        }
    }
}

然后你可以清理对象

 $scope.clean = function(){
    for (var property in $scope.values) {
      if ($scope.values.hasOwnProperty(property)) {
          if(property[0] === '_'){
            console.log($scope.values)
            delete $scope.values[property]
          }
      }
    }
  }

这是a working plunker

答案 2 :(得分:1)

您正在以错误的方式构建变量。这是一个有效的例子。

&#13;
&#13;
angular.module('app', [])
  .controller('Controller', function($scope) {
  $scope.values = [];
  $scope.values[0]= {};
    $scope.values[0] = {
      $firstName:"Kusum",
      lastName:"Kumari"
}
  });
&#13;
<!DOCTYPE html>

<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

  <script src="script.js"></script>
</head>

<body ng-app="app">
  <div ng-controller="Controller">
    

      <div ng-repeat="(key, value) in values">{{value.$firstName}}-{{value.lastName}}</div>

    

  </div>
</body>

</html>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

您可以使用Object.keys和返回Array的方法,您可以迭代。即。

  $scope.keys = function(value) {
    return value ? Object.keys($scope.values):[];
  }

您可以在模板中使用此keys变量

<div ng-repeat="key in keys(values)">
    {{key}} : {{values[key]}}
</div>