我目前正在尝试使用 AngularJS 存储一些数据。我有一个包含不同部分以及行和列的表格。
每个字段都有一个下拉列表,仅包含字母“O”、“T”或“E”。我想要的是将这些值存储在数组中:[节][行][列] - 例如[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 = [];
对此有什么建议吗?
最佳答案
看起来你真正想要的是一个矩阵,但这不是你在 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上做了一个例子.
关于javascript - 具有多维数组的 ng-model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40807517/