AngularJS - 使用 ng-model 动态名称访问输入数组

AngularJS - Accessing to an input array with ng-model dynamic name

我有 3 行,每行有 13 个输入字段。 所有遵循的规则都有一个 ng-model,如:

第一行:field[1][{1-13}] 第二行:field[2][{1-13}] 第三行:field[3][{1-13}]

因此,如果我想访问第一行和字段 #6,我会像 $scope.field[1][6] 那样进行操作。问题是我无法像这样访问该字段。

这是输入的HTML:

<input ng-model='field[1][6]' type='text' />

我尝试使用以下方式访问:$scope.field[1][6] 但它说 "field" 未定义。

以下是我尝试从我的 AngularJS 控制器访问它的方式:

angular.module("myModule")
    .controller("myModuleController", ["$scope","$http", function($scope,$http) {
        console.log($scope.field[1][2]);
}]);

我是AngularJS的新人,感谢您的耐心等待。

这样访问应该没有问题。可能你其他地方有错误。

angular.module('test', [])
.controller('Test', Test);

function Test($scope) {
  $scope.fields = [
    [
      {name: '1-1'},
      {name: '1-2'},
      {name: '1-3'}
    ],
    [
      {name: '2-1'},
      {name: '2-2'}
    ],
    [
      {name: '3-1'}
    ]
  ]
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script>

<div ng-app='test' ng-controller='Test'>
  <div ng-repeat='(i, lv1) in fields'>
    <div ng-repeat='(j, lv2) in lv1'>
      <input type='text' ng-model='lv2.name'>
      <input type='text' ng-model='fields[i][j].name'>
    </div>
  </div>
  
  <div>
    <input type='text' ng-model='fields[1][1].name'>
  </div>
</div>

好吧,我发现了问题所在,以防有人需要知道。 基本上,为了使输入数组位于 $scope 内,需要使用 ng-repeat 进行循环。因此,即使您将 ng-model 指令提供给输入,它也不会知道它,因为它没有被 AngularJS.

处理

结论:您不能仅以这种方式读取输入数组。我通过提供一个动态 ID 解决了这个问题,比如 field-1-6 然后使用:

angular.element("#myApp").find("#field-" + firstIndex + "-" + secondIndex );

在我看来,重做代码并使其由 angular 生成要好得多。就我而言,这是无法完成的,因为客户不希望升级那段代码。因此,如果您遇到我的情况,这是一个很好的解决方法。

;)

不幸的是,您用来更新问题的代码没有显示

  1. 您如何初始化 $scope.field
  2. 您如何在 ng-repeat 中使用它

<input ng-model='field[1][6]' type='text' /> 根据前两点可能有不同的含义。

没有上下文angular会这样读http://jsfiddle.net/3tsw98yf/

这就是你要找的吗?