以非破坏性的方式将多个
EntityCollection 实例合成为一个集合。
如果同一个 ID 的 Entity 存在于多个集合中,它会以非破坏性的方式
合并为一个新的实体实例。如果某个实体在多个集合中拥有相同的属性,
则使用它所属列表的最后一个集合中的实体属性。CompositeEntityCollection 几乎可以在任何使用
EntityCollection 的地方使用。
| Name | Type | Description |
|---|---|---|
collections |
Array.<EntityCollection> | optional 要合并的 EntityCollection 实例的初始列表。 |
owner |
DataSource | CompositeEntityCollection | optional 创建此集合的数据源(或复合实体集合)。 |
Members
readonly collectionChanged : Event
获取当实体被添加或从集合中移除时触发的事件。
生成的事件是一个
EntityCollection.collectionChangedEventCallback。
获取此集合的全局唯一标识符。
readonly owner : DataSource|CompositeEntityCollection
获取此复合实体集合的所有者,即创建它的数据源或复合实体集合。
readonly values : Array.<Entity>
获取集合中的 Entity 实例数组。
不应直接修改此数组。
Methods
向复合集合中添加集合。
| Name | Type | Description |
|---|---|---|
collection |
EntityCollection | 要添加的集合。 |
index |
number | optional 要添加集合的索引。如果省略,集合将 添加在所有现有集合之上。 |
Throws:
-
DeveloperError :如果提供了 index,则它必须大于或等于零且小于或等于集合的数量。
computeAvailability() → TimeInterval
计算集合中实体的最大可用性。
如果集合同时包含无限可用数据和有限可用数据,
则仅返回与有限可用数据相关的区间。如果所有
数据都是无限的,则返回无限区间。
Returns:
集合中实体的可用性。
如果提供的实体在此集合中则返回 true,否则返回 false。
| Name | Type | Description |
|---|---|---|
entity |
Entity | 实体。 |
Returns:
如果提供的实体在此集合中则为 true,否则为 false。
检查复合集合是否包含给定的集合。
| Name | Type | Description |
|---|---|---|
collection |
EntityCollection | 要检查的集合。 |
Returns:
如果复合集合包含该集合则为 true,否则为 false。
getById(id) → Entity|undefined
获取具有指定 id 的实体。
| Name | Type | Description |
|---|---|---|
id |
string | 要获取的实体的 id。 |
Returns:
具有所提供 id 的实体;如果该 id 在集合中不存在,则为 undefined。
按索引从复合集合中获取集合。
| Name | Type | Description |
|---|---|---|
index |
number | 要获取的索引。 |
获取此复合集合中的集合数量。
确定给定集合在复合集合中的索引。
| Name | Type | Description |
|---|---|---|
collection |
EntityCollection | 要查找其索引的集合。 |
Returns:
集合在复合集合中的索引;如果集合不存在于复合集合中,则为 -1。
将集合在复合集合中向下移动一个位置。
| Name | Type | Description |
|---|---|---|
collection |
EntityCollection | 要移动的集合。 |
Throws:
-
DeveloperError :集合不在此复合集合中。
将集合移动到复合集合的底部。
| Name | Type | Description |
|---|---|---|
collection |
EntityCollection | 要移动的集合。 |
Throws:
-
DeveloperError :集合不在此复合集合中。
将集合在复合集合中向上移动一个位置。
| Name | Type | Description |
|---|---|---|
collection |
EntityCollection | 要移动的集合。 |
Throws:
-
DeveloperError :集合不在此复合集合中。
将集合移动到复合集合的顶部。
| Name | Type | Description |
|---|---|---|
collection |
EntityCollection | 要移动的集合。 |
Throws:
-
DeveloperError :集合不在此复合集合中。
从此复合集合中移除所有集合。
如果存在,从此复合集合中移除一个集合。
| Name | Type | Description |
|---|---|---|
collection |
EntityCollection | 要移除的集合。 |
Returns:
如果集合原本在复合集合中且已被移除则为 true,
如果集合不在复合集合中则为 false。
在添加或移除项时立即恢复触发
EntityCollection#collectionChanged 事件。
在事件被挂起期间所做的任何修改,将在调用此函数时作为单个事件触发。此函数还确保
如果事件也被恢复,则集合会被重新合成。
此函数是引用计数的,只要存在相应的
EntityCollection#resumeEvents 调用,就可以安全地多次调用。
Throws:
-
DeveloperError :在 suspendEvents 之前不能调用 resumeEvents。
在调用相应的
EntityCollection#resumeEvents 之前,阻止触发
EntityCollection#collectionChanged 事件;届时
将触发一个涵盖所有被挂起操作的单一事件。
这样可以高效地添加和移除许多项。
在事件被挂起期间,集合的重新合成也会
被挂起,因为这是一个开销较大的操作。
只要存在相应的 EntityCollection#resumeEvents 调用,此函数就可以安全地多次调用。
