Как добавить динамическое свойство в объект angularjs - PullRequest
0 голосов
/ 28 марта 2019

У меня есть объект

$scope.postData = {
  'pmu.messages.message': $scope.upd.message,
  'pmu.received.id': $scope.upd.atomByReceivedBy.id,
};

, а в области видимости есть $scope.ImageList, который содержит массив путей к изображениям

[
  { img: 'a.jpg', smallimg: 'b.jpg', smpath: 'c.jpg' },
  { img: 'a1.jpg', smallimg: 'b1.jpg', smpath: 'c1.jpg' },
];

Я хочу добавить значение этого массива в поле $ scope.postDataЗначение свойства как

$scope.postData = {
   'pmu.messages.message': $scope.upd.message,
   'pmu.received.id': $scope.upd.atomByReceivedBy.id,
   'pmu.image[0].img':
   'pmu.image[0].smallimg':
   'pmu.image[0].smimg':
   'pmu.image[1].img':
   'pmu.image[1].smallimg':
   'pmu.image[1].smimg':
}

Как этого добиться?

Ответы [ 2 ]

1 голос
/ 28 марта 2019

Вы можете перебрать массив с помощью Array.forEach, а затем извлечь ключ и значение каждого изображения, используя Object.entries.

$scope = {
  upd: {
    message: '',
    atomByReceivedBy: {
      id: ''
    }
  },
  ImageList: [{
      img: 'a.jpg',
      smallimg: 'b.jpg',
      smpath: 'c.jpg'
    },
    {
      img: 'a1.jpg',
      smallimg: 'b1.jpg',
      smpath: 'c1.jpg'
    },
  ]
}

$scope.postData = {
  'pmu.messages.message': $scope.upd.message,
  'pmu.received.id': $scope.upd.atomByReceivedBy.id,
};

$scope.ImageList.forEach((img, index) => {
  Object.entries(img).forEach(([key, value]) => {
    $scope.postData[`pmu.image[${index}].${key}`] = value;
  });
});

console.log($scope.postData);
1 голос
/ 28 марта 2019

Итерируйте $scope.ImageList и используйте скобки для создания свойств.

Здесь в примере я использовал только одно свойство

$scope.ImageList.forEach(function(element, index){
    $scope.postData['pmu.image[' + index +'].img'] = element.img;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...