我有一组嵌套的JSON对象,它们都有相同的键,所以我只是取第一个,并将其值解压缩到(key,val)中,以便对它们进行编辑。
{ 'tweedle beetle': { action: battle,
item: paddle,
color: blue },
'poodle': { action: eating,
item: noodles,
color: white },
'bottle': { action: sitting,
item: poodle,
color: transparent },
'fox': { action: watching,
item: battle,
color: red }
}
但并非所有按键都可编辑。所以我有一个可编辑字段列表:
$scope.editableFields = ['item', 'color'];
循环浏览第一条记录时,我只想显示editableFields。如何添加"键"将过滤项目作为要过滤的项目,因为我将项目拆分为两个值?我只想要一个可编辑项目的键列表。也许有更好的方法来解决这个问题,而不是采取项目[0]?
<dl class="dl-horizontal">
<dt ng-repeat-start="(key,val) in items[0] | filter:editableFields">
{{key}}
</dt>
<dd ng-repeat-end>
<input class="form-control input-md" type="text" value="{{val}}" />
</dd>
</dl>
这是一个批量编辑器。我有要使用新值更新的项目列表,但我只需要向用户显示一次选项。
答案 0 :(得分:0)
我同意JoseM你不能这样做,但这是一个可能有用的类似例子:
<div ng-repeat="(key, data) in commands | orderObjectBy:'pos'">{{data.pos}} - {{key}}</div>
$scope.commands = {
"xyz" : {
"group":"g2",
"pos":2
},
"abc" : {
"group":"g2",
"pos":3
},
"ijk" : {
"group":"g1",
"pos":1
}
};
.filter('orderObjectBy', function() {
return function(items, field, reverse) {
var filtered = [];
angular.forEach(items, function(item) {
filtered.push(item);
});
filtered.sort(function (a, b) {
return (a[field] > b[field]);
});
if(reverse) filtered.reverse();
return filtered;
};
});