多くの食品入力を印刷するために ng-repeat を使用しています。現在、次のように ng-init を使用して入力の値を初期化しています。
<div class="formitem" ng-repeat="food in foodlist" ng-init="food.slider=0; food.unit.selected = food.unit[0];">
ただし、初期化された値に対してより複雑な処理を行いたいと考えています。つまり、 in が arrayfood
に既に存在するかどうかを確認したいのです。存在する場合は、に格納されている値を初期値として使用します。そうでない場合は、初期値として 0 を使用します。foodlist
editedFood
editedFood
したがって、この処理をマークアップからコントローラーに移動する必要があると思いますが、どこでどのようにこれを行うかを理解するのに十分なAngularを理解していません。この ng-repeat はコントローラー FoodCtrl 内にあります。
myApp.controller('FoodCtrl', function ($scope, $http, $location, $anchorScroll, $filter) { }
この初期化処理は FoodCtrl 内で行うべきですか? FoodCtrlの各内部の値を初期化するにはどうすればよいfood.slider
ですか?food.unit.selected
food in foodlist
プランク
アップデート
私は今FoodCtrl
、コントローラの最上位レベルと関数の両方に、これにバリエーションを追加しようとしましたが、うまくいきませんでした:
$scope.foodlist.food.slider = 0;
エラー:TypeError: Cannot set property 'slider' of undefined
$scope.food.slider = 0;
エラー:TypeError: Cannot set property 'slider' of undefined
if ($scope.foodlist.food.slider !== undefined) {
console.log("slider")
$scope.foodlist.food.slider = 0;
}
エラー:TypeError: Cannot set property 'slider' of undefined
$scope.foodlist.forEach(function(food) {
food.slider = 0;
food.unit.selected = food.unit[0];
});
エラー: `TypeError: オブジェクト # にはメソッド 'forEach' がありません`
私はかなり困惑しています。