Javascript 如何将这些ng init移动到控制器中?

Javascript 如何将这些ng init移动到控制器中?,javascript,angularjs,Javascript,Angularjs,我使用ng repeat打印出许多食物输入。我目前正在使用ng init初始化输入值,如下所示: <div class="formitem" ng-repeat="food in foodlist" ng-init="food.slider=0; food.unit.selected = food.unit[0];"> 我应该在foodtrl内部初始化处理吗?如何初始化foodlist中每个食品的食品.slider和食品

我使用ng repeat打印出许多食物输入。我目前正在使用ng init初始化输入值,如下所示:

 <div class="formitem" ng-repeat="food in foodlist" ng-init="food.slider=0; food.unit.selected = food.unit[0];">
我应该在foodtrl内部初始化处理吗?如何初始化foodlist中每个
食品的
食品.slider
食品.unit.selected
的值


更新

我现在已经尝试在
foodtrl
中添加这方面的变体,既添加到控制器的顶层,也添加到函数中,但没有成功:

 $scope.foodlist.food.slider = 0;
错误:
TypeError:无法设置未定义的属性“slider”

 $scope.food.slider = 0;
if ($scope.foodlist.food.slider !== undefined) {
  console.log("slider")
  $scope.foodlist.food.slider = 0;
}
$scope.foodlist.forEach(function(food) {
    food.slider = 0;
    food.unit.selected = food.unit[0];
  });
错误:
TypeError:无法设置未定义的属性“slider”

 $scope.food.slider = 0;
if ($scope.foodlist.food.slider !== undefined) {
  console.log("slider")
  $scope.foodlist.food.slider = 0;
}
$scope.foodlist.forEach(function(food) {
    food.slider = 0;
    food.unit.selected = food.unit[0];
  });
错误:
TypeError:无法设置未定义的属性“slider”

 $scope.food.slider = 0;
if ($scope.foodlist.food.slider !== undefined) {
  console.log("slider")
  $scope.foodlist.food.slider = 0;
}
$scope.foodlist.forEach(function(food) {
    food.slider = 0;
    food.unit.selected = food.unit[0];
  });
错误:`TypeError:Object#没有方法'forEach'``


我感到很困惑。

ng init指令将添加当前范围之外的属性

因此,您所做的与此等效(在控制器内部):

请注意,这些参数将在控制器初始化时设置一次

如果事物已定义或应该设置默认值,则可能需要更复杂的逻辑来处理

编辑的

误解了你的意图。。。这是正确的方法

$scope.foodlist.forEach(function(food){
    food.slider = 0;
    food.unit.selected = food.unit[0];
});

在控制器中,只需添加如下内容

$scope.foodlist.forEach(function(food) {
    food.slider = 0;
    food.unit.selected = food.unit[0];
});

最后,我向控制器添加了一个函数,
foodInit(food)

$scope.foodInit = function(food) {
 food.slider = 0;
 food.unit.selected = food.unit[0];
 console.log(food)
}
并用ng init调用它:

<div class="formitem" ng-repeat="food in foodlist" ng-init="foodInit(food)">


不知道这是否理想,但它正在工作。

如果我将其放入foodtrl的顶层,以及如果我将其放入loadFood()函数,则会出现错误“TypeError:无法设置未定义的属性‘slider’”。您需要确保已声明食物项。因此,对于foodlist中的每个项目,都需要设置属性。请参阅编辑的答案。foodlist是否在控制器的范围内?我得到一个错误,forEach无法在未定义的服务器上运行。AngularJS forEach文档说了一些不同的东西,但我也不能让它工作:angular.forEach(值,函数(值,键){this.push(键+':'+值);},log);那就用一个老式的for循环吧。对于(var i=0;i<$scope.foodlist.length;i++){$scope.foodlist[i]。滑块=0;$scope.foodlist[i]。unit.selected=$scope.foodlist[i]。unit[0];}