【问题标题】:AngularJS forEach set object properties in ng-repeat found setAngularJS forEach 在 ng-repeat 发现集中设置对象属性
【发布时间】:2016-04-29 23:06:48
【问题描述】:

我有一个 ng-repeat 显示来自 json 的项目,根据用户在字段中输入的内容,它可以被过滤。

<tr ng-repeat="i in filteredItems = (iso3166 | filter: {alpha_2: isoQuery})">

这一切都按预期工作。

组中的每个项目(“iso3166”)都有 3 个布尔值,“restricted”、“unrestricted”和“unclassified”,分别对应于“license”、“prohibited”和“size”列。

用户可以在每一行的每一列中将这些值之一设置为真或假:

这很好用。

我需要在顶部添加一个“ALL”行,它将过滤集中的每个项目设置为每列中单击的按钮。

换句话说,如果用户点击“license”列中的ALL rows“restricted”按钮,每一行的“license”“restricted”值都应该切换为真或假。我不确定设置值的语法。

现在我有了 ng-click

ng-click="setAll('col1','licensed')"

和函数为

  $scope.setAll = function (column, value) {
    angular.forEach($scope.filteredItems, function (value, key) {
      ??
    });
  };

如何为循环中的每一行分配正确的值?

【问题讨论】:

  • 对不起。编辑了问题。
  • 但是如果你有过滤的项目,为什么不直接做value[column] = value
  • 你需要更改局部变量的名称,否则它会被遮蔽。function(item, key) { item[column] = value; }
  • 这正是我的问题。谢谢!

标签: javascript angularjs loops angularjs-ng-repeat


【解决方案1】:

目前,您的内部函数隐藏了 value 变量。将局部变量重命名为其他名称以更改它。

$scope.setAll = function (column, value) {
  angular.forEach($scope.filteredItems, function (item, key) {
    item[column] = value;
  });
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多