2016-11-25 3 views
1

В настоящее время я пытаюсь сохранить некоторые данные с помощью AngularJS. У меня есть таблица с разными разделами, а также строки и столбцы.ng-model с многомерным массивом

Каждое поле имеет выпадающий список, содержащий только буквы «O», «T» или «E». Я хочу сохранить эти значения в массиве: [section] [row] [column] - например. [0] [0] [0] = "E".

Это, как я пытался сохранять значения:

<select id="{{$parent.$parent.$index}}_{{$parent.$index}}_{{$index}}" 
    ng-change="changePollValue()" 
    ng-model="selectedValues[$parent.$parent.$index][$parent.$index][$index]" ...> 

К сожалению, AngularJS создает вложенные объекты внутри одномерного массива. Как это:

"selectedValues" : [ { 
       "0" : { 
       "0" : "E", 
       "1" : "T", 
       "2" : "O", 
       "3" : "E", 
       "4" : "T" 
       }, 
       "1" : { 
       "0" : "O", 
       "1" : "E", 
       "2" : "T", 
       "3" : "O", 
       "4" : "E" 
... 

"selectedValues" инициализируется как $scope.selectedValues = [];

Любые консультации по этому вопросу?

ответ

1

Похоже, что вы действительно хотите, это матрица, и это не то, как вы создаете матрицу в javascript. Это как получается трехмерная матрица:

$scope.matrix = [[[]]]; 

Как это у вас есть родительский массив, который имеет ребенок, который является другим массивом (это делает простую матрицу), а затем, этот ребенок имеет еще один дочерний массив (внука к родительскому массиву), который затем становится трехмерным массивом. Посмотри на трехмерное определении массива с некоторыми детьми и внуками:

$scope.matrix = [ 
    [ 
    [ 
     { selectedOption: '0-0-0' }, 
     { selectedOption: '0-0-1' }, 
     { selectedOption: '0-0-2' } 
    ], [ 
     { selectedOption: '0-1-0' }, 
     { selectedOption: '0-1-1' }, 
     { selectedOption: '0-1-2' } 
    ] 
    ], [ 
    [ 
     { selectedOption: '1-0-0' }, 
     { selectedOption: '1-0-1' }, 
     { selectedOption: '1-0-2' } 
    ], [ 
     { selectedOption: '1-1-0' }, 
     { selectedOption: '1-1-1' }, 
     { selectedOption: '1-1-2' } 
    ] 
    ] 
]; 

В этом случае первая цифра относится к родительскому индексу, вторая цифра (после дефиса) относится к индексу ребенка и третьему index (после последнего дефиса) относится к индексу внука. Таким образом, 1-1-1 указывает на второго родителя (0 базового индекса), а на второго ребенка и второго внука.

Я привел пример на codepen to illustrate how to handle this.

+0

Спасибо! Я не знал о синтаксисе [[]]] для создания матрицы. Я пробовал Java-синтаксис, но это не сработало. – DCH

+0

Без проблем @DCH. Если это действительно помогло вам и это правильный ответ, вы можете отметить это как таковое. Повеселись. –

Смежные вопросы