我很困惑,我有一个 jquery 脚本,如果它在 html 表中发现负数,则将文本颜色更改为红色。
console.log("reading Script");
$('td:nth-child(3)').each(function() {
var txt = $(this).text();
if (txt.indexOf('-') > -1) {
$(this).css("color", "red");
console.log("True: " + txt);
} else {
$(this).css("color", "green");
console.log("False: " + txt);
}
});
此脚本在一个示例中完美运行,其中我将“ng-repeat d in data”与此表达式 {{d.category}} 一起使用,但我有第二个示例,它不起作用,我使用相同的脚本,但 Angular 表达式不同,因为我读取的 JSON 结构不同,ng-repeat =“PostResponse.result中的数据”,我的 Angular 表达式像这样 {{data.merchMetrics .category}} 在这里我得到的所有值都是绿色的,甚至是负数,所以我不明白它,因为第一个例子是完全相同的,唯一不同的是结构数据。
即使控制台日志的工作方式也不同,在我的第一个示例中,日志记录如下:
- 正确:-4
- 错误 10
这没问题,但在第二个示例中我在控制台中得到了这个:
- 错误:{{data.merchMetrics.category}}
那么,有什么想法吗?
最佳答案
您在 Angular 应用程序中使用 jQuery 编码实践,这会让您头疼 - 这一次是因为这些实践违背了 Angular 精神,而且还因为您不会获得 Angular 的好处。
很可能您遇到了计时问题,在第一种情况下,Angular 已经用值替换了您的模板表达式,而在第二种情况下则没有。你不应该像这样操作 DOM。 Angular 开发中最重要的部分之一是:您不应该从 DOM 解析回数据,永远。
您应该使用 ng-class
进行条件格式化。
<td ng-class="{ positive: data.merchMetrics.category < 0, negative: data.merchMetrics.category >= 0}">{{data.merchMetrics.category}}</td>
然后定义两个 CSS 类,positive
和 negative
,字体颜色分别为 red
和 green
.
可以在此处以及其他资源中找到更多关于为什么 Angular 的使用方式应与 jQuery 不同的背景信息:
关于javascript - 使用 jQuery 脚本将 CSS 样式应用到 angularjs 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34616152/