Javascript 如何将这些ng init移动到控制器中?
我使用ng repeat打印出许多食物输入。我目前正在使用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和食品
<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];}