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

Angularjs 当键具有特殊字符($)时,ng repeat不使用键值对,angularjs,Angularjs,当键具有特殊字符($)时,ng repeat不使用键值对 例如 <div ng-repeat="(key, value) in values">{{key}}</div> 它会打印lastNAme,但是它无法像那样访问它 {{Obj["$firstName"]}} 注意:双引号引用这是意料之中的,如下所示 ngRepeat将自动忽略以$开头的对象键,因为 它是Angular用于public($)和private($)的前缀 财产 您可以更改控制器中以$开头的属性 fo

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

例如

<div ng-repeat="(key, value) in values">{{key}}</div>
它会打印
lastNAme
,但是它无法像那样访问它

{{Obj["$firstName"]}}

注意
双引号
引用

这是意料之中的,如下所示

ngRepeat将自动忽略以$开头的对象键,因为 它是Angular用于public($)和private($)的前缀 财产

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

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

以下是

您以错误的方式构建变量。下面是一个工作示例

angular.module('app',[])
.controller('controller',function($scope){
$scope.values=[];
$scope.values[0]={};
$scope.values[0]={
$firstName:“Kusum”,
姓氏:“Kumari”
}
});

{{value.$firstName}}-{{value.lastName}}

您可以使用
Object.keys
和一个返回
数组的方法,您可以对该数组进行迭代。i、 e

  $scope.keys = function(value) {
    return value ? Object.keys($scope.values):[];
  }
您可以在模板中使用此
变量

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

{{key}}:{{values[key]}

您可以发布示例javascript和html代码片段吗?为什么要将“$”添加到firstname变量中?在
$scope.values={firstName:“Kusum”,lastName:“Kumari”}的每一处使用相同的逻辑
注意:使用
来分隔元素而不是
My json仅以这种格式出现,所以我需要这样处理。您能解释一下原因吗?方括号表示法通常可以包含特殊字符,而点表示法无法包含这些字符。由于要迭代的对象是动态的,我不确定哪个键会有这个$符号,所以我需要一个修复,因为响应是动态的,所以我无法从key中避免$。我需要尽快解决这个问题。@KusumKushwaha我不是说你应该避免使用key中的$。您只是错误地构建了$scope.value变量。检查ur和我的变量之间的差异我知道,但仍在寻找解决方案,因为我无法避免。@KusumKushwaha检查出来谢谢这个解决方案,我又找到了一个解决方案,请检查这个插件
<div ng-repeat="key in keys(values)">
    {{key}} : {{values[key]}}
</div>