Дополнение JSON из REST о дополнительных данных в AngularJS

0

EDIT (РЕШЕНИЕ): 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
  }
}

Существует ли "Угловой способ"? Должен ли я использовать библиотеки, такие как lodash, underscore и т.д.?

  • 0
    Это не обязательно угловатая вещь. Вы бы просто обработали это в ванильном JavaScript.
  • 0
    У вас есть какой-то контекст к тому, что вы делаете? Вставка значений из входа?
Показать ещё 3 комментария
Теги:
rest
lodash
underscore.js

3 ответа

0
Лучший ответ

Вы можете использовать метод расширения underscorejs.

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 } ]
  • 0
    Боюсь, но это было бы все еще решением сегодня .. Спасибо за ваши усилия ..
  • 0
    Не могли бы вы ответить и на второй вопрос? Спасибо!
Показать ещё 1 комментарий
0

Для решения "Угловой путь" вы можете использовать функцию 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

0
array[1].c = "Michael Jackson";
array[1].d = ["Thriller..."]

и array[0].c для george michael...

  • 0
    :) Нет, это не ответ, речь идет главным образом об увеличении JSON-структур .. Может быть, существует своего рода библиотека MATCH?
  • 0
    Извините, я не понял этого из названия, может быть, я немного медлительный сегодня. Вы имеете в виду что-то вроде сериализации объектов в «спящем» стиле? но для клиента?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню