我正在使用 UI.Bootstrap 手风琴,我定义了我的标题,如下所示:
<accordion-group ng=repeat="(cname, stations) in byClient">
<accordion-heading>
{{ cname }} <span class="pull-right"> {{ Object.keys(stations).length }} Stations</span>
</accordion-heading>
当显示 Object.keys(stations).length
时,解析为空。如果我在我的控制器中放置相同长度的调用,我会得到预期的计数。有什么东西阻止方法调用在 AngularJS 中工作吗?
使用 stations
的手风琴的其余部分按预期运行,因此我知道它已正确填充。 byClient
数据结构基本上如下所示:
{
"Client Name" : {
"Station Name": [
{...},
{...}
]
}
}
原文由 Gargoyle 发布,翻译遵循 CC BY-SA 4.0 许可协议
是的,那是因为
Object
是window/global
的一部分,angular 无法根据范围评估该表达式。当您在绑定中指定Object.keys
时,角度会尝试根据$scope
对其进行评估,但找不到它。您可以将object.keys
的引用存储在 rootScope 的某个实用程序中,并在应用程序的任何位置使用它。是这样的:-
并将其用作:-
那么这将可用于任何子范围,除了独立范围。如果您打算在隔离范围内执行此操作(例如:- 隔离范围指令),您需要在范围内添加
Object.keys
的引用,或者在范围内公开一个将返回的方法长度。或者更好的是,创建一个格式过滤器来返回密钥长度并在任何地方使用它。
并做:-
演示