0

我有一個HTML代碼如何以ng重複指定動態範圍對象

<tr ng-repeat='row in po123'> 
 
      <td>{{row.buyerLineItemNumber}}</td> 
 
      <td>{{row.buyerPartNumber}}</td> 
 
      <td>{{row.supplierPartNumber}}</td> 
 
      <td>{{row.itemDescription}}</td> 
 
      <td>{{row.itemQuantity}}</td> 
 
      <td>{{row.itemQuantityUOM}}</td> 
 
      </tr>

和範圍元素

var poNumber = "123"; 
 
$scope.poNumber = poNumber; 
 
$scope["po"+poNumber] = [{'buyerLineItemNumber':'12121','buyerPartNumber':'buyerPartNumber','supplierPartNumber':'supplierPartNumber','itemDescription':'itemDescription','itemDescription':'itemDescription','itemQuantityUOM':'itemQuantityUOM'}];

在appication poNumbe r是動態生成的,並且可以作爲$ scope值使用,並且我使用poNumber創建動態範圍元素。我如何在ng-repeat中使用這個動態創建的範圍元素。

如果我在代碼中靜態指定片斷它工作得很好,我想指定像<tr ng-repeat='row in "po"+{{poNumber}}'>

我怎樣才能做到這一點?

+1

什麼是你想實現?應該由控制器負責決定哪些數據將被顯示,而不是視圖,什麼阻止您在控制器中進行動態選擇? – pedromarce

回答

0

兩個選項:

第一:

var poNumber = "123"; 
$scope.poNumber = poNumber; 
$scope.myData = {}; 
$scope.myData["po"+poNumber] = [{'buyerLineItemNumber':'12121','buyerPartNumber':'buyerPartNumber','supplierPartNumber':'supplierPartNumber','itemDescription':'itemDescription','itemDescription':'itemDescription','itemQuantityUOM':'itemQuantityUOM'}]; 

和HTML:

<tr ng-repeat='row in myData["po"+poNumber]'> 

二:

// add to controller 
$scope.getByName = function (value) { 
    return $scope[value] 
}; 

和HTML:

<tr ng-repeat='row in getByName("po"+poNumber)'> 
0

它似乎是您使用poNumber作爲您的範圍中的每個數據的ID,您只需要使用該數組的對象。

如果你設置:

$scope.myArray = []; 

,只要你想添加與買家數據的新對象,你只需要做一個控制器中的功能的下一個內部或方法或監聽器,它取決於你需要什麼:

var newBuyerData ={ 
'buyerLineItemNumber':'12121', 
'buyerPartNumber':buyerPartNumber, 
'supplierPartNumber':supplierPartNumber, 
'itemDescription':itemDescription, 
'itemDescription':itemDescription, 
'itemQuantityUOM':itemQuantityUOM}; 

$scope.myArray.push(newBuyerData); 

,然後你將有一個數組與人你要顯示的對象,然後你就可以做NG重複,因爲使用該類型的數據,ng-repeat實例化數據集合中的每個項目。

<tr ng-repeat='row in myArray'> 
      <td>{{row.buyerLineItemNumber}}</td> 
      <td>{{row.buyerPartNumber}}</td> 
      <td>{{row.supplierPartNumber}}</td> 
      <td>{{row.itemDescription}}</td> 
      <td>{{row.itemQuantity}}</td> 
      <td>{{row.itemQuantityUOM}}</td> 
</tr> 

有了這個,你將能夠有一個列表的買家數據與所有列出的數據,你想。另一方面,如果您只想顯示1位買家,您仍然可以擁有買家數據數組,並且只需將它添加一個名爲id(element_id)的字段,就可以生成randombly,它將如下所示:

var idNumber = 1000; 

var newBuyerData ={ 
'element_id': idNubmer, 
'buyerLineItemNumber':'12121', 
'buyerPartNumber':buyerPartNumber, 
'supplierPartNumber':supplierPartNumber, 
'itemDescription':itemDescription, 
'itemDescription':itemDescription, 
'itemQuantityUOM':itemQuantityUOM}; 

$scope.myArray.push(newBuyerData); 
idNumber = idNumber + 1; 

這部分應該是一個方法或function.So裏面,每當你怎麼稱呼它,它會在新數據添加到陣列中,然後將增加的ID號變量。

然後你可以只搜索你想要的數據,並只顯示1個買家數據項。

var itemThatIWant = 123; //the number that i want, you can insert this //number with an input text or something 

$scope.itemToShow = ""; 
angular.forEach($scope.myArray,function(item){ 
    if(item.idNumber === itemThatIWant){ 
     $scope.itemToShow = item; 
    } 
}); 

然後在你的HTML,您將不需要NG重複,你可以用你的itemToShow變量:

<tr > 
      <td>{{itemToShow.buyerLineItemNumber}}</td> 
      <td>{{itemToShow.buyerPartNumber}}</td> 
      <td>{{itemToShow.supplierPartNumber}}</td> 
      <td>{{itemToShow.itemDescription}}</td> 
      <td>{{itemToShow.itemQuantity}}</td> 
      <td>{{itemToShow.itemQuantityUOM}}</td> 
</tr> 

我希望它能幫助:)