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

标签 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];">

但是,我想对初始化值做一些更复杂的处理。也就是说,我想检查 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/

相关文章:

javascript - PhoneGap/Cordova 在 Safari 中打开外部链接,而不是在 App 中全屏显示

javascript - angularjs .$on 内的服务未定义

javascript - 将对象转换为 JSON 字符串并将其置空

javascript - 我有一个在线工具可以将 HTML 转换为字符串吗?

javascript - 将 "value"从表单中的选择传递到具有 javascript 问题的 php 变量

javascript - 使用返回数组的 Object.defineProperty 重新定义 .push()

javascript - 如果元素不存在,如何像 jQuery() 一样静默地使 querySelector() 失败

javascript - 使用过滤器时ng-repeat绝对$index

javascript - 当 if 条件多次满足时从数组返回多个值

javascript - Angular ng-repeat不显示空对象属性