$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.Model

cola的视图模型对象

get从Model中读取一个数据项cola.Model
Parameters:
  • namestring

    数据项名或路径

  • loadModestring | function | Object

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

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

Returns:any
当一个数据项的值是懒装载的,那么在我们通过get()方法尝试从此数据项中读取内容时,Cola会利用loadMode参数的值来确定要如何来装载尚未装载的数据。
set向Model中设置一个数据项cola.Model
Parameters:
  • namestring

    数据项名或路径

  • valueany

    数据

Returns:cola.Model
set向Model中设置一批数据项cola.Model
Parameters:
  • dataJSON

    以JSON方式定义的一批数据项

Returns:cola.Model
describe描述Model中的一个数据项cola.Model
Parameters:
  • namestring

    数据项名,此处不支持数据路径

  • configjson

    以JSON形式定义的

Returns:cola.Model
我们可以把描述一个数据项的过程看做是定义一个DataType中的Property,事实上Cola内部的实现机制也就是这样的。
所以此方法第二种参数可传递的JSON配置对象其实也就是一个Property的配置对象。
参考:cola.Property
describe定义Model中的一个数据项的数据类型cola.Model
Parameters:
  • namestring

    数据项名,此处不支持数据路径

  • dataTypestring

    DataType的name

Returns:cola.Model
当我们直接向此方法的第二个参数传递一个字符串时,Cola会将此字符串理解成DataType的name,并将找到的DataType设置为该Property的数据类型。
definition根据名称获得一个数据描述对象的实例cola.Model
Parameters:
  • namestring

    数据描述对象的名称

Returns:cola.Definition
参考:cola.Definition的name属性
watch监听某数据路径的数据变化cola.Model
Parameters:
  • pathstring || [string]

    数据路径

  • listenerfunction

    该方法支持以下三个参数:

    • path - 本次触发相关的数据路径
    • type - 数据消息的类型
    • arg - 数据消息的相关参数
    目前可能的数据消息包含以下这些类型,每一种消息类型还可能带有不同的消息参数:
    • cola.constants.MESSAGE_REFRESH - 数据刷新消息。此时arg包含下列子属性:
      • data - 发生了整体变化的数据,可能是cola.Entity或cola.EntityList。
    • cola.constants.MESSAGE_PROPERTY_CHANGE - Entity的属性值改变。此时arg包含下列子属性:
      • entity - 发生改变cola.Entity实例
      • property - 改变的属性名
      • value - 改变后的值
      • oldValue - 改变前的值
    • cola.constants.MESSAGE_CURRENT_CHANGE - cola.EntityList中的当前Entity改变。 注意这里所说的改变不是当前Entity的内容改变,而是指cola.EntityList中的当前Entity由一个变成了另一个。此时arg包含下列子属性:
      • entityList - 发生改变cola.EntityList
      • current - 新的当前Entity
      • oldCurrent - 改变前的当前Entity
    • cola.constants.MESSAGE_EDITING_STATE_CHANGE - Entity的编辑状态改变。此时arg包含下列子属性:
      • entity - 发生改变cola.Entity
      • state - 新的state
      • oldState - 改变前的state
      编辑状态有下列几种:
      • none - 无状态,即未发生改变。
      • new - 新增
      • modifed - 已被修改
      • deleted - 已被删除
    • cola.constants.MESSAGE_VALIDATION_STATE_CHANGE - Entity的校验状态改变。此时arg包含下列子属性:
      • entity - 发生改变cola.Entity
      • property - 如果此属性有值表示是Entity中特定的属性的校验状态发生了改变;如果此属性为空则表示整个Entity的校验状态发生了改变。 比如当一个Entity中有两个属性的校验状态为error,那么此时整个Entity的校验状态也是error。如果其中某个属性的值修改后已通过了校验,那么该属性的校验状态发生了改变。 但是整个Entity的校验状态仍是error。
      校验状态有下列几种:
      • none - 无状态,即合法状态。
      • info - 有校验信息,仍属于合法状态。
      • warning - 有警告信息,仍属于合法状态。
      • error - 有错误信息,属于不合法状态。
    • cola.constants.MESSAGE_INSERT - EntityList中插入了新的Entity。此时arg包含下列子属性:
    • cola.constants.MESSAGE_REMOVE - 从EntityList中删除一个Entity。此时arg包含下列子属性:
      • entityList - 相关的EntityList
      • entity - 被删除的Entity
    • cola.constants.MESSAGE_LOADING_START - 开始执行数据装载。此时arg包含下列子属性:
      • data - 相关的Entity或EntityList
      • property - 如果是Entity的某个属性发生的数据装载,那么此属性将用于标注该属性的属性名。
    • cola.constants.MESSAGE_LOADING_END - 数据装载结束。此时arg的子属性同cola.constants.MESSAGE_LOADING_START一致。

Returns:cola.Model
此方法可以一次监听一个路径,也可以利用数组定义多个路径。在定义路径时还可以通过通配符来声明路径的监听范围。
比如: 比如 person.* 表示监听person中的所有子属性的值的变化;person.** 这表示监听person中任意一级的子属性的变化。
disableObservers将禁止Entity向观察者发送消息cola.Model
Returns:cola.Entity
此方法最常见的使用场景是在将要对数据进行批量的操作之前,先调用 disableObservers() 禁止消息发送。
这样界面就无法得到数据被改变的通知,也就不会随着操作进行大量重复而无意义的重渲染。
当批量的操作完成之后,再调用 enableObservers() 重新允许消息发送。
此时也可以调用 notifyObservers() 方法通知所有观察者进行重渲染。
需要注意的是 disableObservers() 和 enableObservers() 内部是使用计数器来管理的,
这意味着当你连续调用了两次 disableObservers() 之后,必须也要调用两次 enableObservers() 才能冲洗恢复消息发送。
enableObservers允许Entity向观察者发送消息cola.Model
Returns:cola.Entity
参考 disableObservers()
notifyObservers通知观察者数据已更改cola.Model
Returns:cola.Entity
参考 disableObservers()
action声明一个Actioncola.Model
Parameters:
  • namestring

    Action的name

  • actionfunction

    Action方法

Returns:cola.Model
Action其实就是一个Function,将Function声明为一个Action的目的是为了供dom模板来调用。

定义Action其实还有一个更加简单的方法,例如下面的两段代码作用是相同的:

model.action("showMessage", function() {
  ... ...
});

model.action.showMessage = function() {
  ... ...
};

action声明一组Actioncola.Model
Parameters:
  • configjson

    以JSON方法定义的一组Action方法

Returns:cola.Model
例如:

model.action({
  showMessage: function() {
    ... ...
  },
  buyNow: function() {
    ... ...
  }
});

action根据名称查找一个Actioncola.Model
Parameters:
  • namestring

    Action的name

Returns:function
此方法不仅可用于查找本Model中的Action,当某个名称的Action在本Model中无法找到时Cola会进一步到父Model中查找。