我正在使用 ng-repeat 打印出许多食物输入。我目前正在使用 ng-init 来初始化输入的值,如下所示:
<div class="formitem" ng-repeat="food in foodlist" ng-init="food.slider=0; food.unit.selected = food.unit[0];">
但是,我想对初始化值做一些更复杂的处理。即,我想检查food
in是否foodlist
已存在于数组中editedFood
。如果是,则使用存储的值editedFood
作为初始值。如果不是,则使用 0 作为初始值。
所以,我想我需要将此处理移出标记并移至控制器,但我对 Angular 的理解不够好,无法理解在何处以及如何执行此操作。这个 ng-repeat 位于控制器 FoodCtrl 内:
myApp.controller('FoodCtrl', function ($scope, $http, $location, $anchorScroll, $filter) { }
我应该在 FoodCtrl 中进行初始化处理吗?如何初始化FoodCtrl 的每个内部的food.slider
值food.unit.selected
?food in foodlist
Plunkr
更新
我现在尝试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: Object # has no method 'forEach'``
我感觉很难过。