如何呈现异构对象的集合

时间:2014-10-30 23:03:22

标签: angularjs

鉴于JSON响应:

[
  { type: 'A', name: 'Clem', created_at: '...', ... },
  { type: 'B', url: 'http://go.gl/H65Fs90x', created_at: '...', ... },
  { type: 'C', city: 'Berlin', created_at: '...', ... }
]

哈希已经简化;认为它比这个例子更复杂。

如何使用ngRepeat呈现此异构对象集合?

     <li ng-repeat="object in objects">
        // if object is of type A then render fields of object
        // if object is of type B then render fields of object
     </li>

这有更好的方法吗?还有什么“Angular-ish”?

2 个答案:

答案 0 :(得分:2)

如果您有两个以上的条件或结构更复杂,那么这样的事情(代码未经过测试)

<li ng-repeat="object in objects">
   <span ng-if="object.type == 'A'">{{object.name}}</span>
   <span ng-if="object.type == 'B'">{{object.url}}</span>
   <span ng-if="object.type == 'C'">{{object.city}}</span>
</li>

答案 1 :(得分:2)

实现此目的的一种方法是使您绑定的项目负责了解它们的呈现方式。这可以简单到为每个项目提供templateUrl。以下是此技术的示例:http://jsbin.com/EhAnIMaJ/2/edit?html,js,output