我有一个HTML代码
<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中,poNumber是动态生成的,可以作为$ scope值使用,我使用poNumber创建一个动态范围元素。如何在ng-repeat中使用此动态创建的范围元素。
如果我在代码片段中静态指定它工作正常,我想指定类似<tr ng-repeat='row in "po"+{{poNumber}}'>
我怎样才能实现这一目标?
答案 0 :(得分: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)'>
答案 1 :(得分:0)
似乎您使用poNumber作为范围中每个数据的id,您只需要使用一个对象数组。
如果你设置:
$scope.myArray = [];
每当你想添加一个带有买方数据的新对象时,你只需要在控制器中执行函数或方法或监听器的下一个内容,这取决于你需要什么:
var newBuyerData ={
'buyerLineItemNumber':'12121',
'buyerPartNumber':buyerPartNumber,
'supplierPartNumber':supplierPartNumber,
'itemDescription':itemDescription,
'itemDescription':itemDescription,
'itemQuantityUOM':itemQuantityUOM};
$scope.myArray.push(newBuyerData);
然后您将拥有一个包含您想要显示的对象的数组,然后您将能够执行ng-repeat,因为用于该类型的数据,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>
通过此功能,您可以获得所有数据列表,并列出您想要的所有数据。
另一方面,如果你只想展示一个买家,你仍然可以拥有一系列买家数据,只需添加一个名为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;
这部分应该在方法或函数内部。因此,无论何时调用它,它都会将新数据添加到数组中,然后增加idNumber变量。
然后,您只需搜索所需的数据,只显示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-repeat,你可以只使用你的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>
我希望它有所帮助:)