编辑(解决方案):http://plnkr.co/edit/SjzpmQqMPuOCvcdZn5bV?p=preview
我从REST-API获取以下数据:
[
{
"a": "foo"
},
{
"a": "bar"
}
]
但需要:
[
{
"a": "foo",
"activated": false
},
{
"a": "bar",
"activated": true
}
]
我怎么能在角度内做到这一点,我怎么能主要添加一些新的属性,以便我可以对他们的改变做出反应可能是一种新的风格。
第二个问题:或许我需要进行以下转换:
{
"a": {
"foo": true,
"bar": false
}
}
是否有" Angular-way"要做到这一点?我是否必须使用像lodash,下划线等库。?
答案 0 :(得分:0)
array[1].c = "Michael Jackson";
array[1].d = ["Thriller..."]
乔治迈克尔的和array[0].c
......
答案 1 :(得分:0)
您可以使用underscorejs's extend方法。
<!doctype html>
<html ng-app="app">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
</head>
<body>
<div ng-controller="MyController as vm">
{{vm.list | json}}
</div>
<script>
angular.module('app', [])
.controller('MyController', function () {
var vm = this;
var list = [{
"a": "foo"
}, {
"a": "bar"
}];
vm.list = _.each(list, function (item) {
var result = _.random(0, 100) % 2 ? true : false;
_.extend(item, { activated: result });
});
});
</script>
</body>
</html>
<强>结果强>
[ { "a": "foo", "activated": false }, { "a": "bar", "activated": true } ]
答案 2 :(得分:0)
对于“Angular way”解决方案,您可以使用angular.forEach
函数
angular.module("myApp")
.controller("myVm", function($scope) {
var vm = $scope;
vm.items = [
{
"a": "foo"
},
{
"a": "bar"
}
];
vm.activeList = [];
var pushItem = function(value,key) {
var o = {};
o[value.a] = false;
this.push(o);
};
angular.forEach(vm.items, pushItem, vm.activeList);
});
<强>输出强>
activeList = [{"foo":false},{"bar":false}]
有关angular.forEach
功能的详细信息,请参阅AngularJS angular.forEach API Reference