javascript - 具有多维数组的 ng-model

标签 javascript angularjs arrays

我目前正在尝试使用 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/

相关文章:

javascript - 如何使用 Struts 中的属性名称通过 JavaScript 动态创建 HTML?

javascript - 在 react 循环中附加事件监听器

javascript - 如何处理从 "chrome.tabCapture"获得的媒体流?

javascript - Jhon Papa Angular 风格指南 Factory - 对象内的函数未运行

angularjs - angular beforeEach 注入(inject)导致简单测试失败

javascript - 如何制作一个返回数组中每个整数的阶乘的函数

python - 如何修复 ZigZag 问题中的 'list index out of range' 错误?

javascript - jquery nicescroll 和 touchbehavior 问题

angularjs - 如何检查 Protractor 是否显示多个元素?

javascript - 如何在javascript中自动生成数组?