Angularjs 迭代以';开头的JSON键$';在角js中

Angularjs 迭代以';开头的JSON键$';在角js中,angularjs,Angularjs,我试图通过迭代来显示json对象的键值。 这是我的密码 <html ng-app> <head> <script data-require="angular.js@1.6.0" data-semver="1.6.0" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.0/angular.js"></script> <link rel="s

我试图通过迭代来显示json对象的键值。 这是我的密码

    <html ng-app>
     <head>
      <script data-require="angular.js@1.6.0" data-semver="1.6.0" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.0/angular.js"></script>
      <link rel="stylesheet" href="style.css" />
      <script src="script.js"></script>
     </head>

     <body ng-init='x = {"$xy":"boost-combinations@$q,article,false,10"}'>
      <li ng-repeat="(k,v) in x">{{k}} : {{v}}</li>
       <h1>Hello Plunker!</h1>
     </body>
   </html>

  • {{k}:{{v}
  • 你好,普朗克!

    我只想显示为$xy:boost组合@$q,article,false,10。

    这是不可能的。忽略所有$和$$字符。如果您看到角度源的ngRepeat.js,您可以阅读此信息

     *`ngRepeat` will silently *ignore* object keys starting with `$`, because
     *   it's a prefix used by Angular for public (`$`) and private (`$$`) properties.
    

    不幸的是,angular忽略以“$”开头的键作为默认行为

    我想最直接的重写方法是实现您自己的函数,该函数从对象创建一个数组并迭代:

     <body ng-init='x = {"$xy":"boost-combinations@$q,article,false,10"}'>
      <li ng-repeat="item in fix(x)">{{item.k}} : {{item.v}}</li>
    

    这对我很有效-

    <div ng-init='y = [{ "$xy": "boost-combinations@$q,article,false,10" }]'>
       <div ng-repeat="(k, v) in y">
          {{v}}
       </div>
    </div>
    
    
    {{v}
    

    
    {{y}
    
    它给出了迭代已达到最大摘要的错误,然后中止执行:angular.js:error:[$rootScope:infdig]10$digest()迭代已达到。流产!好的,您应该(为了性能)只在x更改=>
    $scope.$watch('x',function(oldV,newV){if(oldV!==newV{$scope.xFixed=fix(newV)….
    时在手表中执行此操作,然后在“xFixed”上迭代,而不是直接应用该函数
    <div ng-init='y = [{ "$xy": "boost-combinations@$q,article,false,10" }]'>
       <div ng-repeat="(k, v) in y">
          {{v}}
       </div>
    </div>
    
    <div ng-init='y = { "$xy": "boost-combinations@$q,article,false,10" }'>
       {{y}}
    </div>