从REST增加关于AngularJS中的其他数据的JSON

时间:2015-11-25 15:32:04

标签: angularjs json rest underscore.js lodash

编辑(解决方案):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,下划线等库。?

3 个答案:

答案 0 :(得分:0)

array[1].c = "Michael Jackson";
array[1].d = ["Thriller..."]
乔治迈克尔的

array[0].c ......

答案 1 :(得分:0)

您可以使用underscorejs's extend方法。

http://jsfiddle.net/2676saju/

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