2015-04-20 26 views
1

這裏是我的HTML片段:獲取裏面的元素的值NG-重複

<tr ng-repeat="row in rowCollection"> 
    <td><h6 id="{{$index}}">{{row.inventory_serialno}}</h6></td> 
</tr> 

<div class="form-group"> 
    <label for="inventory_serialno">SL No:</label> 
    <input class="form-control" value="//I need the value of h6 here//" id="inventory_serialno" placeholder="Enter serial number"> 
</div> 

目標:

  1. 獲取內部ng-repeat元素的值(在這種情況下,「H6」每行的標記值)
  2. 使用該對應值自動填充每行中存在的相應文本框輸入的值。

輸入文本框不在ng-repeat範圍內。
出於某種原因,如果我這樣做,我不能訪問H6標籤的值(給出一個null值)

document.getElementById("1").innerHTML; //or even text() 

古怪,我注意到上面的JavaScript代碼運行在瀏覽器控制檯上不錯,但不是我的腳本(這意味着它與角元素生成時間有關。可能是我在它生成之前訪問它)。

儘管如此,有人可以澄清一下解決方案。提前致謝。

********更新與控制器代碼*****

app.controller('InventoryCtrl', function ($scope) { 

    var x = document.getElementById("1").innerHTML; // giving a null value 
    console.log(x); 

    $scope.rowCollection = [{ 
     id: 100, 
     inventory_serialno: 'HW13FGL' 
     }, { 
     id: 101, 
     inventory_serialno: 'SM123GH' 
     }, { 
     id: 102, 
     inventory_serialno: 'LK90100' 
     }]; 
}); 
+1

不要用一個數字開始一個編號 – Huangism

+0

在你試圖訪問它的地方分享你的控制器代碼 – mohamedrias

+0

我認爲你應該有** ng-repeat =「rowCollection track by $ index」**如果你想要訪問$ index。 –

回答

1

你可以做這樣的:

<input value="{{rowCollection[2].inventory_serialno}}" /> 

Example

不過我會將輸入放在ng-repeat內部以保持其清潔,並在大包裝中實現您喜歡的佈局,如下所示:

<div class="grid" ng-repeat="row in rowCollection"> 
    <div class="col"> 
    <h6 id="{{$index}}">{{row.inventory_serialno}}</h6> 
    <hr> 
    <div class="form-group"> 
     <form> 
     <input value="{{row.inventory_serialno}}"/> 
     </form> 
    </div> 
    </div> 
</div> 

如果您需要每個項目的輸入,請使用ng-repeat

+0

感謝Tony的回答,但是這總是會檢索數組中的第三項並更新值。每行將有一個單獨的輸入框。就像我說的,我需要獲得相應的值到各自的輸入框。 –

+0

哦,我看到了 - 你能不能在ng-repeat中放置一個輸入框呢? –

+0

沒有實際根據我想要實現的模板,我想填充對應於每個行元素的單獨div上的值。如果在同一行上,我可以直接從數組中直接提供值,但那不是我想要實現的。 –