我目前正在尝试使用AngularJS存储一些数据。我有一个包含不同部分的表,以及行和列。
每个字段都有一个下拉列表,只包含字母“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 = [];
对此有何建议?
答案 0 :(得分: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' }
]
]
];
在这种情况下,第一个数字与父索引相关,第二个数字(在连字符之后)与子索引相关,第三个索引(在最后一个连字符之后)与孙子索引相关。所以1-1-1指向第二个父母(0个基本指数),以及第二个孩子和第二个孙子。
我在codepen to illustrate how to handle this上做了一个例子。