Angularjs 在ng类中重复处理外部的表达式

Angularjs 在ng类中重复处理外部的表达式,angularjs,angularjs-directive,angularjs-scope,angularjs-ng-repeat,Angularjs,Angularjs Directive,Angularjs Scope,Angularjs Ng Repeat,谁能让我借用一下你的眼睛,因为这一定是我在这里错过的一些愚蠢的细微差别 例如,在一个ng repeat中,我拉出一个值并向它抛出一个内联表达式,如下所示(在本例中,只是根据值的天数更改一些文本颜色): EDIT*-scope.item没有什么特别的意思,我只是稍微编辑了一下措辞,为了一个互联网示例,去掉了任何识别名称。 ng-class="{ 'green-text':{{daysSinceToday(item.theItemDate) <= 20}},

谁能让我借用一下你的眼睛,因为这一定是我在这里错过的一些愚蠢的细微差别

例如,在一个ng repeat中,我拉出一个值并向它抛出一个内联表达式,如下所示(在本例中,只是根据值的天数更改一些文本颜色):

EDIT*-scope.item没有什么特别的意思,我只是稍微编辑了一下措辞,为了一个互联网示例,去掉了任何识别名称。

ng-class="{
            'green-text':{{daysSinceToday(item.theItemDate) <= 20}},
            'orange-text':{{daysSinceToday(item.theItemDate) > 20 && daysSinceToday(item.theItemDate) < 30}},
            'red-text':{{daysSinceToday(item.theItemDate) >= 30}}
           }">
它似乎不在乎,这很奇怪,因为如果我把它像生的一样放在那里

{{daysSinceToday(scope.item[0].theItemDate)}}

如果没有表达式,它确实给了我正确的值,但似乎忽略了ng类。我错过了什么?我一定累了,这个星期一应该以一个高音符结束。哈哈。谢谢

您不应该以
作用域项[0]
的身份访问它。
我不确定您在
ng repeat
中迭代的变量是什么,但是,假设您使用的是类似
items
的东西,您应该使用
items[0]来访问它。不管(…

哈!文件在我指责缺乏咖啡因下,您想要:

ng-class="{
            'someclass':daysSinceToday(scope.item[0].theItemDate) <= 20,
            'anotherclass':daysSinceToday(scope.item[0].theItemDate) > 20 && daysSinceToday(scope.item[0].theItemDate) < 30,
            'yetanotherclass':daysSinceToday(scope.item[0].theItemDate) >= 30
           }">
ng类=”{
“someclass”:daysSinceToday(scope.item[0].ItItemDate)20&&daysSinceToday(scope.item[0].ItItemDate)<30,
“yetanotherclass”:daysSinceToday(scope.item[0].ItItemDate)>=30
}">
…ng类中不需要卷发


(关于何时需要{{}和何时不需要的规则是任意的,容易被忽略,正如这里非常清楚地演示的)

访问范围。项[0]意味着您在范围中添加了一个名为“项”的数组。我敢打赌,您的数组名为“项”不,我只是稍微修改了一下措辞,省去了任何识别信息,只是把scope.item这个词当作一个占位符来举个例子。显然,我并没有很长时间讨论这个角度的问题。从我的角度来看,你的代码中的问题是你说的是
scope.item[0]
,而你的意思是
item[0]
好的,我想你必须向我们展示更多的代码——你能给我们一个有效的ng repeat,这样我们就可以看到它读取的数据了吗?(@gonzofish也说得对,“scope.”不属于模板内部,如果您将其包括在内的话。这是我经常犯的一个错误,有时我会试图将scope.scope=scope放在指令中……)呃,没关系,我们都忽略了显而易见的。请看下面的答案…显然,在我的xaml/.net世界生活太久之后,我仍然在学习angular/html/css的注意事项。哈哈。说真的,谢谢你的谦虚。嘿,我已经使用angular daily两年了,仍然对这样的东西很感兴趣。感谢上帝e容易出现的bug,否则我们只会遇到硬bug。除了
ngHref
ngSrc(set)之外,Angular的指令从不使用大括号
。但这些只是为了避免不正确的请求而替换本机属性。根据@zeroflagL的说明,如果某些内容看起来像JavaScript,则不使用大括号。在这种情况下,
ng class
在类名和它们的条件之间采用JavaScript映射。
ng-class="{
            'someclass':daysSinceToday(scope.item[0].theItemDate) <= 20,
            'anotherclass':daysSinceToday(scope.item[0].theItemDate) > 20 && daysSinceToday(scope.item[0].theItemDate) < 30,
            'yetanotherclass':daysSinceToday(scope.item[0].theItemDate) >= 30
           }">