ページに多数の非表示の入力フィールドがあります。これらの入力フィールドの値を配列に読み込みたいです。入力フィールドの構造は次のとおりです。
<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 要素の反復を行うことは、Angular に JQuery アプローチを適用しようとするのはやりすぎですか? 上記の配列の形式の非表示入力のデータである、必要なものを取得するためのより良い Angular メソッドはありますか?
次に、AngularJS で要素セレクターをどのように拡張しますか? element がある場合a
、どのように選択しinputs contained within a
ますか?