【问题标题】:Loop works fine in jQuery but won't work in Angular循环在 jQuery 中工作正常,但在 Angular 中不起作用
【发布时间】:2016-06-16 13:22:27
【问题描述】:

我正在尝试从复杂的 JSON 响应创建一个数组。我有工作的 jQuery 代码,我正在尝试适应 Angular,但它不起作用。

这是运行良好的 jQuery 代码:

j$.each(data.groupingsDown.groupings, function(di, de) {
var values = [];
reportData.push({"key":de.label, "values": values});
    j$.each(data.groupingsAcross.groupings, function(ai, ae) {
        values.push({"x": ae.label, "y": data.factMap[de.key+"!"+ae.key].aggregates[0].value});
    });
});   

这是我尝试在 Angular 中使用但不起作用的版本:

angular.forEach(data.groupingsDown.groupings, function (di, de) {
var values = [];
reportData.push({'key' : de.label, 'values' : values});
    angular.forEach(data.groupingsAcross.groupings, function (ai, ae) {
        values.push({'x' : ae.label, 'y' : data.factMap[de.key + '!' + ae.key].aggregates[0].value});
    });
});

我收到的错误信息是:

TypeError: 无法读取未定义的属性“聚合”

违规行似乎是

[de.key + '!' + ae.key]

如何像在 jQuery 中一样在 Angular 中进行这项工作?

【问题讨论】:

  • angular forEach 作品通过 function(value, key) 不像 jquery function(key, value) ...可能是这个原因
  • 是的——就是这样!谢谢!

标签: javascript jquery angularjs salesforce


【解决方案1】:

根据 gaurav5430 的评论,我需要反转 (key, value) 并使其 (value, key)。

所以改变 2 个函数

function(di, de)
function(ai, ae)

function(de, di)
function(ae, ai)

解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 2019-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    相关资源
    最近更新 更多