我在$scope
中有一个名为data
的JSON对象。该对象有一个名为items
的成员,它可以是Object或Object of Array。因此我不能使用ng-repeat:
<ul>
<li ng-repeat="item in data.items">
<item data="item"></item>
</li>
</ul>
...因为如果data.items
是一个对象,它会为<item>
中的每个成员创建一个data.items
指令。但是,如果data.items
是一个数组,那么工作正常。我以为我可以这样做:
<span ng-if="angular.isObject(data.items)">
<span ng-if="angular.isDefined(data.items)">
<item data="data.item"></item>
</span>
</span>
但是这不起作用,我猜是因为我需要isObject和isDefined的参数是一个可以解析的表达式,但是在{{}}}
中包装参数只会导致语法错误。
然后我想我可以创建一个指令来检查项目并修改编译函数中的模板元素,但是这需要访问$ scope上的数据,而编译函数没有。我认为链接功能为时已晚,无法修改模板?
答案 0 :(得分:1)
您可以这样做:
<ul ng-if="data.items.length>0">
<li ng-repeat="item in data.items">
<item data="item"></item>
</li>
</ul>
<span ng-if="data.items && !(data.items.length>0)">
<item data="data.items"></item>
</span>