$colacola.AbstractButtoncola.AbstractCheckboxcola.AbstractContainercola.AbstractDropdowncola.AbstractEditorcola.AbstractInputcola.AbstractItemGroupcola.AbstractListcola.AbstractMenuItemcola.AbstractSlotListcola.AjaxValidatorcola.AsyncValidatorcola.Avatarcola.Breadcrumbcola.Buttoncola.ButtonGroupcola.Calendarcola.CardBookcola.Carouselcola.CascadeBindcola.Checkboxcola.ControlMenuItemcola.Cornercola.CustomDropdowncola.CustomValidatorcola.DataTypecola.DatePickercola.DateTimePickercola.Dialogcola.Dividercola.Dropdowncola.DropdownMenuItemcola.Elementcola.EmailValidatorcola.Entitycola.EntityDataTypecola.EntityListcola.FieldSetcola.GroupBoxcola.HeaderMenuItemcola.IFramecola.Imagecola.Inputcola.ItemsViewcola.Labelcola.Layercola.LengthValidatorcola.Linkcola.ListViewcola.Menucola.MenuButtoncola.MenuItemcola.Modelcola.MultiSlotPickercola.NestedListcola.NestedListBindcola.NestedListNodecola.Nodecola.NumberValidatorcola.Panelcola.PointingLabelcola.Progresscola.Propertycola.Providercola.RadioButtoncola.RadioGroupcola.RangeSlotListcola.Ratingcola.RegExpValidatorcola.RenderableElementcola.RequiredValidatorcola.Revealcola.Ribboncola.Segmentcola.Selectcola.Sidebarcola.Slidercola.SlotListcola.SplitPanecola.Stackcola.Stepscola.Tabcola.TabButtoncola.Tablecola.TableColumncola.TableContentColumncola.TableDataColumncola.TableGroupColumncola.TableSelectColumncola.Tagcola.TimeLinecola.TitleBarcola.Togglecola.Treecola.TreeNodecola.TreeNodeBindcola.UrlValidatorcola.Validatorcola.Widgetcola.breadcrumb.Sectioncola.buttonGroup.Separatorcola.steps.Stepcola.tab.AbstractTabButtoncola.utilcola.util.KeyedArray

cola.EntityList

数据实体集合

关于EntityList的分页功能,此处需要特别做些说明。EntityList除了有一个pageCount属性之外,还有一个叫pageCountDetermined的属性。 Provider返回集合型数据时有3种方式来支持分页:

  • 返回一个JSON而不是Array。 JSON中的$data用来放当前页的数据,它是一个数组, 再通过这个JSON中的$totalEntityCount属性来声明集合的总记录数(不是指当前页的记录数)。 完成第一次的数据装载之后,EntityList就已经得到了确定的pageCount和totalEntityCount,同时pageCountDetermined也将变成true。
  • 如果设置了Provider的detectEnd属性为true,那么Provider会自动尝试向后端多请求一条记录。 比如我们设置pageSize为10,当前加载第3页,那么Provider实际向后端发出的请求中的from和limit参数将是20和11。 此时后端只需要直接向前台返回数组即可,前台根据获得的结果是否足够11条,来确定是否还存在下一页。 在还没有加载到最后一页之前,EntityList并不知道确定的pageCount和totalEntityCount,pageCountDetermined的值也是false。 当装载到最后一页时才能确定pageCount和totalEntityCount,并且将pageCountDetermined变为true。
  • 如果不设置Provider的detectEnd属性为true,那么Provider不会通过多请求一条记录的方式来提前判断是否存在下一页。 因此在最后一页的记录数刚好等于pageSize时,EntityList仍会以为存在下一页数据。这在部分场景下并不会存在问题。 只有当装载某一页数据时记录数小于pageSize时,才能确定pageCount和totalEntityCount,并且将pageCountDetermined变为true。

current
cola.Entity
当前Entity
EntityList总是会尝试维护一个当前Entity,默认情况下它是EntityList中的第一个Entity。
entityCount
number
当前EntityList中子Entity的数量
注意此数量是不包含那些已被标记为deleted的Entity的。
pageSize
number
分页大小,即每页的条目数。
pageNo
number
当前页的页号,从1开始计数。
pageCount
number
总的页数
pageCountDetermined
boolean
总页数是否是你一个已经确定的值。
默认情况下pageCountDetermined为false,此时Cola不认为pageCount属性标示的是真实的总页数,它只代表当前EntityList已经装载的页数。
即默认Cola总是认为当前EntityList的最后一页之后可能存在下一页的数据可被装载的。
在下列两种情况下,Cola会将pageCountDetermined设置为true...
  • 某一次装载下一页数据时,得到的数据量少于pageSize,此时Cola认为本次装载的是EntityList的最后一页。
  • 装载下一页数据时,Server端返回的数据中包含entityCount的定义,此时Cola会根据此entityCount计算中总的页数。 在返回数据中指定entityCount的形式如下: { $entityCount: 1000, $data: [ // 实际的分页数据 { ... }, { ... }, { ... }, { ... }, ... ] }
totalEntityCount
number
总的Entity数量。
entityCount用于表示EntityList中当前实际有多少个Entity,不包含尚未下载的。而totalEntityCount则是包含尚未下载的Entity的总数量。
totalEntityCount有时并不是一个准确的或者确定的数字,这取决于Server端返回的数据中有没有包含entityCount的定义。
如果没有,那么我们通过totalEntityCount拿到的只是根据页数和每页记录数估算出来的一个数字。
fillData利用数组填充当前页的数据cola.EntityList
Parameters:
  • arraystring

    以JSON数组方式定义的数据

Returns:cola.EntityList
hasNextPage当前页之后是否还有下一页的数据cola.EntityList
Returns:boolean
例如当我们用EntityList显示一个列表,当用户滚动到最后一行之后,Cola内部依此方法的返回结果判断是否需要尝试装载下一页的数据。
参考: pageCountDetermined
loadPage装载指定页的数据cola.EntityList
Parameters:
  • pageNomnumber

    要装载的页号

  • loadModestring

    该装载模式目前有四种可能的取值:

    • async - 异步装载模式
    • sync - 同步装载模式
    • never - 不装载
    • 传入一个回调方法或一个回调对象,相当于按照异步模式装载,同时定义了该异步操作的回调方法或回调对象。 回调对象的定义请参考: 回调对象

Returns:cola.EntityList
gotoPage跳转到指定的页cola.EntityList
Parameters:
  • pageNomnumber

    要前往的页号

  • loadModestring

    装载模式。参考:loadPage

Returns:cola.EntityList
firstPage跳转到第一页cola.EntityList
Parameters:
  • loadModestring

    装载模式。参考:loadPage

Returns:cola.EntityList
previousPage跳转到上一页cola.EntityList
Parameters:
  • loadModestring

    装载模式。参考:loadPage

Returns:cola.EntityList
nextPage跳转到下一页cola.EntityList
Parameters:
  • loadModestring

    装载模式。参考:loadPage

Returns:cola.EntityList
lastPage跳转到最后一页cola.EntityList
Parameters:
  • loadModestring

    装载模式。参考:loadPage

Returns:cola.EntityList
insert向EntityList中添加一个Entitycola.EntityList
Parameters:
  • entityjson | cola.Entity

    如果向此参数中传入一个JSON对象,那么Cola会自动将其转换成cola.Entity的实例。

  • insertModestring

    该插入模式目前有四种可能的取值:

    • begin - 在最前面插入
    • before - 在refEntity之前插入
    • after - 在refEntity之后插入
    • end - 在最后插入

  • refEntitycola.Entity

    如果不指定此参数则以EntityList中的当前Entity作为参照Entity。

Returns:cola.Entity
在实际使用过程中,向EntityList中插入数据的方法很多。很多时候用其他方法来完成这一操作会让代码看起来更加简洁明了。
请参考:

remove从EntityList中删除一个Entitycola.EntityList
Parameters:
  • entitycola.Entity

    如果不指定此参数则表示要删除EntityList中的当前Entity。

  • detachboolean

    在默认情况下,当我们从EntityList和删除一个Entity时,Cola只是将它的状态修改为delete,并没有真正的把它从EntityList中移除掉。 这样当我们对这个EntityList做提交时,我们还可以从中遍历出哪些Entity是需要在Server端做删除处理的。 如果将此参数设置为true,那么该Entity会在删除是彻底中EntityList中移除。

Returns:cola.Entity
在实际使用过程中,建议您直接使用Entity.remove()来完成这一操作。
setCurrent将某个Entity设定为EntityList的当前Entitycola.EntityList
Parameters:
  • entitycola.Entity

    要设定的当前Entity

Returns:cola.EntityList
first将EntityList中的第一个Entity设定为当前Entitycola.EntityList
Returns:cola.Entity
previous将当前Entity的前一个Entity设定为当前Entitycola.EntityList
Returns:cola.Entity
previous将当前Entity的下一个Entity设定为当前Entitycola.EntityList
Returns:cola.Entity
last将EntityList中的最后一个Entity设定为当前Entitycola.EntityList
Returns:cola.Entity
getPath返回当前EntityList的数据路径cola.EntityList
Returns:string
flush刷新该EntityListcola.EntityList
Parameters:
  • loadModestring | function | Object

    该装载模式目前有四种可能的取值:

    • async - 异步装载模式
    • sync - 同步装载模式
    • never - 不装载
    • 传入一个回调方法或一个回调对象,相当于按照异步模式装载,同时定义了该异步操作的回调方法或回调对象。 回调对象的定义请参考: 回调对象

Returns:cola.EntityList
此方法只有在该EntityList是通过cola.Provider获取的情况下是有效的,即通知Cola清空该EntityList中所有的数据并重新利用Provider获取。
disableObservers将禁止EntityList向观察者发送消息cola.EntityList
Returns:cola.EntityList
参考 cola.Model.disableObservers()
enableObservers将禁止EntityList向观察者发送消息cola.EntityList
Returns:cola.EntityList
参考 cola.Model.disableObservers()
notifyObservers将禁止EntityList向观察者发送消息cola.EntityList
Returns:cola.EntityList
参考 cola.Model.disableObservers()
toJSON将EntityList转换成一个JSON对象的数组cola.EntityList
Parameters:
  • optionsjson

    选项

Returns:json
toArray以数组的形式返回集合中的所有Entitycola.EntityList
Returns:cola.Entity
each迭代集合中的Entitycola.EntityList
Parameters:
  • fnfunction

    此方法支持一个传入参数,回调时该参数的值即是当前迭代的Entity。 如果我们在某此回调时返回了false,那么迭代过程会就此终止,类似于在循环体中使用了break。其他任何返回值或不定义返回值,迭代过程都将继续执行。

  • optionsjson

    选项

Returns:cola.EntityList