具有多维数组的ng模型

时间:2016-11-25 14:48:09

标签: javascript angularjs arrays

我目前正在尝试使用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 = [];

对此有何建议?

1 个答案:

答案 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上做了一个例子。

相关问题