Как хранить массив объектов с помощью angularJS

у меня есть эта схема объекта в mongoDB, я буду называть мой объект CAR в этом вопросе:

this.carroSchema = new Schema({
    modelo: String,
    ano: String,
    placa: String,
    cor: String,
    categoria: [{tipo: String, preco: String}],
    createdOn: {type: Date, default: Date.now}
});

и у меня есть эта функция, которая получает объект CAR и хранит в массиве ‘arrayCarros’

$scope.carregarCarros = function(){
    $http({
        method: 'GET',
        url: '/listaCarro'
    })
    .then(function successCallback(response){
        $scope.arrayCarros = response.data;
    }, function errorCallback(response){
        alert(response.data);   
    });
}

если я делаю выбор, как это:

<select class="form-control" ng-click = "carregarCarros()" name="select">
<option ng-repeat = "carros in arrayCarros">{{carros.placa}}</option>                       
</select>

у меня есть доступ к свойству ‘placa’ из объектного автомобиля, поэтому я могу показать значения в моем select.

но мой вопрос в том, как я храню массив ‘categoria’, который находится внутри моего объектного автомобиля, в другом массиве, чтобы я мог сделать ng-повторение его в моей опции и иметь доступ к его свойствам, таким как ‘tipo’ и ‘preco’?

1 ответ

  1. Вот простой способ сделать это. Очевидно, вы всегда можете использовать встроенную функцию javascript, такую как Array.фильтр или массив.уменьшите в зависимости от вашего случая пользы, но ниже простое для следования решение.

    $scope.other_array = [];
    
    response.data.forEach(function(car){
       $scope.other_array.push(car.categoria)
    })
    
    console.log(other_array)
    

    Следует также отметить, что вы можете иметь несколько ng-повторов и только один рендер Карро.место и один рендер Каррос.categoria. Это или просто оба vars визуализируются в одном и том же ng-repeat.