从 Angular 中使用 'eval' 捕获未定义的 TypeError

Catch undefined TypeError from use of 'eval' in Angular?

本文关键字:未定义 TypeError eval Angular      更新时间:2023-09-26

我收到一个控制台错误,我似乎无法清除。有没有人对如何捕获/清除此问题有建议?

类型错误: 无法读取未定义的属性"总计" at Array.eval (eval at (http://brandfeed.app:8001/app/scripts/directives/report-chart.js:133:28), :1:20)

我已经将错误缩小到因为我在最后一行代码中使用了eval,或者由于此函数执行的操作顺序。我尝试用if (scope.metric !== undefined)捕获错误,但这不起作用。

在此问题的上下文中,scope.metric === impressions.total

if ((scope.metric !== undefined) &&(scope.metric !== ""))  {
    var maximumY = d3.max(data, function(d) {
        return eval('d.' + scope.metric);
    });
    x.domain(data.map(function(d) { return d.id; }));
    y.domain([-(maximumY * .01), d3.max(data, function(d) { return eval('d.' + scope.metric); })]);
}

不使用 eval ,您可以使用括号表示法访问该属性

eval('d.' + scope.metric)
// should be written as
d[scope.metric]