我试图通过迭代来显示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。
答案 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>