从' $'开始迭代overJSON键。在角js

时间:2017-01-10 11:16:59

标签: 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="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>

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

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

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

并在控制器中

function fix(x) {
  return Object.keys(x).map(function(k) {
    return { k: k, v: x[k] };
  });
}

答案 2 :(得分:0)

这对我来说很有用 -

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