angularjs 过滤器未在 IE9 中执行

angularjs filter not executing in IE9

我是 运行 AngularJS 1.2.22,我似乎无法使用 IE9 和我编写的自定义过滤器。它在 Chrome 和 Firefox 中运行良好,但当然不是我真正需要的浏览器。

我在 标签中有两个过滤器:一个用于 return 字体图标名称,另一个用于提供颜色样式。问题是一个过滤器运行正常,它给我图标名称,但另一个过滤器运行正常,它给我颜色。

这是我的 HTML

<td>
    <i tooltip="{{d.Validation}}" class='fa {{d.StatusIndicator | statusIcon}}'
        style="color: {{d.StatusIndicator | statusIconColor}}; font-size: 1.25em;"></i>
</td>

我的过滤器来源:

app.filter('statusIcon', function() {
    return function(item) {
        switch (item) {
        case 'Y':
            return "fa-exclamation-circle";
        case 'R':
            return "fa-exclamation-triangle";
        case 'G':
            return "fa-check-circle";
        default:
            return "";
        }
    };
});

app.filter('statusIconColor', function() {
    return function(item) {
        switch (item) {
        case 'Y':
            return "#B2B200";
        case 'R':
            return "red";
        case 'G':
            return "green";
        default:
            return "green";
        }
    };
});

当我在 Firefox 和 IE 上打开开发工具时,我可以看到 'color' 样式在 Firefox 中正确呈现,但在 IE 中根本没有 'color' 样式。我在 Firefox 的 'statusIconColor' 过滤器中看到断点命中,但在 IE 中没有,这让我相信过滤器甚至没有在 IE 中被调用。

'statusIcon' 过滤器中的一个断点在两个浏览器中都命中,但在 'statusIconColor' 中没有命中。奇怪!

并且没有控制台错误消息。

如有任何建议,我将不胜感激。 科里.

这正是您应该使用 ngAttrStyle 指令的情况:

ng-attr-style="color: {{d.StatusIndicator | statusIconColor}}; font-size: 1.25em;"

但是我会更好地使用 ngStyle 并避免为此目的使用过滤器。您可以改用控制器函数。

显然 IE 按字面意义应用这些样式 color: {{d.StatusIndicator | statusIconColor}}; font-size: 1.25em;,因此 ngAttrStyle 指令仅在插值后才设置 style 属性。