我在页面上有许多隐藏的输入字段。我想将这些输入字段的值读入一个数组。输入字段具有以下结构:
<div class="loadedFood" ng-model="savedFood">
<div class="foodItem">
<input type="hidden" name="[food][61][uid]" value="61" />
<input type="hidden" name="[food][61][unit]" value="30.00" />
<input type="hidden" name="[food][61][quantity]" value="4" />
<input type="hidden" name="[food][61][total]" value="120" />
</div>
<div class="foodItem">
<input type="hidden" name="[food][67][uid]" value="67" />
<input type="hidden" name="[food][67][unit]" value="7.00" />
<input type="hidden" name="[food][67][quantity]" value="6" />
<input type="hidden" name="[food][67][total]" value="42" />
</div>
</div>
我想将这些读入一个数组loadedFood
,每个 divfooditem
成为一个新的数组元素,包含隐藏输入的名称和值,例如:
[{
uid : 61,
unit : 7.00,
quantity : 6,
total : 42,
} {
uid : 67,
unit : 3.00,
quantity : 3,
total : 42,
}]
我可以将页面上每个单独输入的值推送到数组中,loadedFood
如下所示:
$scope.savedFood = angular.forEach(angular.element(".foodItem input"), function (value, key) {
var a = angular.element(value);
value = a.attr("value");
console.log(value)
$scope.loadedFood.push(value);
});
但显然这不是我想要的。我需要为每个创建一个新元素.foodItem
,然后在其中添加每个输入的名称和值,然后将整个元素推送到loadedFood。我被困在 DOM 元素选择器如何在 AngularJS 中工作的非常基本的问题上——试图做一些 JQueryish 之类的事情
var input = angular.element(value + " input");
完全打破。
首先,做这种 DOM 元素迭代是否过多地尝试将 JQuery 方法应用于 Angular?有没有更好的 Angular 方法来获取我需要的东西,也就是上面数组形式的隐藏输入中的数据?
其次,如何在 AngularJS 中扩展元素选择器——如果你有 element a
,你如何选择 for inputs contained within a
?