gpt4 book ai didi

javascript - 如何将这些 ng-init 移动到 Controller 中?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:45:01 24 4
gpt4 key购买 nike

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

 <div class="formitem" ng-repeat="food in foodlist" ng-init="food.slider=0; food.unit.selected = food.unit[0];">

但是,我想对初始化值做一些更复杂的处理。也就是说,我想检查 foodlist 中的 food 是否已经存在于数组 editedFood 中。如果是,则使用存储在 editedFood 中的值作为初始值。如果不是,则使用 0 作为初始值。

因此,我想我需要将此处理从标记中移出并移至 Controller ,但我对 Angular 的了解还不够深,无法理解在哪里以及如何执行此操作。这个 ng-repeat 位于 Controller FoodCtrl 中:

myApp.controller('FoodCtrl', function ($scope, $http, $location, $anchorScroll, $filter) { }

我应该在 FoodCtrl 中进行初始化处理吗?如何为 FoodCtrl 中的每个 food in foodlist 初始化 food.sliderfood.unit.selected 的值?

The Plunkr


更新

我现在已经尝试将它的变体添加到 FoodCtrl 中,既添加到 Controller 的顶层又添加到函数中,但没有成功:

 $scope.foodlist.food.slider = 0;

错误:类型错误:无法设置未定义的属性“ slider ”

 $scope.food.slider = 0;

错误:类型错误:无法设置未定义的属性“ slider ”

if ($scope.foodlist.food.slider !== undefined) {
console.log("slider")
$scope.foodlist.food.slider = 0;
}

错误:类型错误:无法设置未定义的属性“ slider ”

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

错误:`TypeError: Object # has no method 'forEach'``

我觉得很难过。

最佳答案

在你的 Controller 中添加这样的东西。

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

关于javascript - 如何将这些 ng-init 移动到 Controller 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19797435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com