当前位置: 首页 > 面试题库 >

ng-在嵌套对象上重复单个元素

方昊阳
2023-03-14
问题内容

假设我有一个对象,其键对应于产品,值对应于对象,对象又具有对应于那些产品已售出的价格点的键,以及对应于所售数量的值。

例如,如果我以1美元的价格出售10个小部件,以2美元的价格出售5个小部件,那么我将具有以下数据结构:

{ 'widget': {'1': 10, '2': 5} }

我想遍历这种结构并在这样的表中生成行:

thing   price  amount
---------------------
widget  $1     10
widget  $2     5

在Python中,可以嵌套列表推导来遍历这样的列表数据结构。使用ng-repeat可以做到吗?


问题答案:

ng-repeat目前尚不具备在对象内部进行复杂迭代的可能方法(在python中是可能的)。查看ng-repeat
源代码,并注意匹配的正则表达式为:

(key, value) in collection -并且它们将它们推入键数组并分配给值列表,因此,您可能很难拥有复杂的ng-repeat

基本上,这里已经 回答 了两种类型的解决方案

  1. 嵌套ng-repeat类似于第一个答案。
  2. 像建议的第二个答案一样,重建数据对象以适合1 ng-repeat。

我认为解决方案2更好,因为我希望将排序和编码逻辑保留在控制器中,而不是在HTML文档中进行处理。这也将允许进行更复杂的排序(即基于价格,数量,widgetName或其他逻辑)。

另一件事-第二个解决方案将迭代数据集的可能方法(因为在那里没有使用 hasOwnProperty )。

为了使用angular.forEach并显示该解决方案相当简单,但允许使用复杂的排序逻辑,我改进了此
Plunker (基于finishingmove
Plunker)中的解决方案。

$scope.buildData = function() {

  var returnArr = [];

  angular.forEach($scope.data, function(productData, widget) {
      angular.forEach(productData, function( amount, price) {
        returnArr.push( {widgetName: widget, price:price, amount:amount});            
      });
  });
   //apply sorting logic here
  return returnArr;
};
$scope.sortedData = $scope.buildData();

然后在您的控制器中:

<div ng-controller="MyCtrl">
    <table>
      <thead>
        <tr>
          <td>thing</td>
          <td>price</td>
          <td>amount</td>
        </tr>
      </thead>
      <tbody>
      <tr ng-repeat="item in sortedData">
        <td>{{ item.widgetName }}</td>
        <td>{{ item.price|currency }}</td>
        <td>{{ item.amount }} </td>
        </tr>
      </tbody>
    </table>
</div>


 类似资料:
  • 我有一个json,包含如下对象数组 在我看来,我想用ngFor呈现json,就像这样 你的名字叫什么? abc 定义 Ghi jkl

  • 我有一个这样的对象数组: 我正在尝试按类别分组,并创建一个名为children的数组,然后此数组有另一个按服务分类分组的嵌套子数组 所需输出 我已经尝试了几个小时,下面是我尝试的代码示例: https://mongoplayground.net/p/Asb5THvqlf6

  • 问题内容: 我有一个JSON对象,表示为: 我需要在 第二 层上做一个中继器,列出“虚假”数字。 我已经知道如何获得最高水平 但是我不清楚循环降级的顺序。例如,这是错误的: 我也知道如何 嵌套 中继器来实现这一点,但是在这种情况下,我根本不需要显示顶层。 澄清说明 这里的目标是有一个带有4个“伪”数字的列表(每个包裹有2个,顺序中有2个包裹)。 问题答案: 大量搜索不错的简单解决方案以进行动态迭代

  • 我有以下对象。 现在我需要使用在标签中显示这个对象键,并在文本区域中显示值。本质上我想在对象属性上使用,可以吗? 我必须使用类似的东西:

  • 问题内容: 是否可以实现这样的代码:- 我有两个数组,我想在单行中显示它们。 PS:我不要求语法。我正在寻找实现这一目标的逻辑 谢谢 就像:-“ http://jsfiddle.net/6ob5bkcx/1/ ” 问题答案: 您应该在控制器中而不是在视图中执行此操作。将dataValues映射到键/值对对象,并使用索引引用values数组。假定每个数据键都有一个对应的值键。 控制器: 视图:

  • 问题内容: 我有一些虚拟XML文件: 使用此库http://code.google.com/p/x2js/将其转换为json,并转换为变量 Day可以具有任意数量的Job,Job可以嵌套并且包含任意数量的其他Job。 现在使用此代码 我可以列出有效的日期。我希望使用以下代码 我可以列出当天的工作日和最高职位,但这是行不通的。(要列出嵌套的Jobs,将是下一个任务,而不是现在询问该任务)。 那么,如