2016-11-08 75 views
0

我有3行,每行有13个输入字段。 所有遵循规则的有NG的模型,如:AngularJS - 使用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]但它说,“场”是不确定的。

这里是我想从我的AngularJS控制器访问:当DOM加载,他们不能与NG-重复,因为一些深层次的因素所产生的创建

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

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

+0

你有没有包括你的控制器 –

+0

当然,我做到了。 – mkmnstr

回答

0

好吧,我发现这个问题是什么情况下需要有人知道。 基本上,为了使输入数组位于$scope之内,它需要与ng-repeat循环。因此,即使您将ng-model指令提供给输入,它也不会知道它,因为它没有被AngularJS处理。

结论:你不能只读这种输入数组。我的工作围绕它通过提供一个动态的ID,像field-1-6,然后使用:

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

在我的观点是要好得多,只是重做你的代码,并使其通过角产生。在我的情况下,它不能完成,因为客户不希望升级这段代码。所以,如果你处于我的处境,这是一个很好的解决方法。

;)

0

访问方式应该没有问题。也许你在别处有一些错误。

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>

+0

它可以工作,当你这样做,但我仍然无法通过控制器访问字段值。我也应该能够以“$ scope.fields”的形式访问输入数组,但不是,仍然未定义。 – mkmnstr

+0

@mkmnstr你能告诉你如何试图访问它们吗? – Icycool

+0

@lcycool我刚刚更新了我使用的代码的问题。问候! – mkmnstr

0

你更新你的问题与遗憾的是不显示

  1. 你如何初始化代码$ scope.field
  2. 你如何使用它NG-重复

<input ng-model='field[1][6]' type='text' />可能意味着不同的事情取决于前两点。

没有上下文的角度会读它像这样http://jsfiddle.net/3tsw98yf/

是不是你想要的?

+0

不是。那么,事情就是没有初始化。他们的代码片段不能被修改,我只能通过ID来使用它,并设置一个自定义的ID名称。但是,谢谢! – mkmnstr

+0

这很有道理。感谢您的澄清。 –