2016-11-08 34 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

這很有道理。感謝您的澄清。 –