Attribute

Class

Class Detail

class base.Attribute
Attribute ()
包含一些属性操作的方法,仅用于 augment()

Methods Detail

Attribute.prototype.addAttr()
void addAttr ( name, attrConfig )
给宿主对象增加一个属性.
Parameters:
  • name (String) – 属性名
  • attrConfig (Object) – 属性配置信息, 支持下面的配置项:
  • attrConfig.value (String|Number) – 属性默认值。注意默认值请不要设置为复杂对象(通过自定义构造器 new 出来的),复杂对象可设置 valueFn 返回。
  • attrConfig.valueFn (Function) – 提供属性默认值的函数,传入对象内部对应的属性值和属性名,取该函数的返回值作为最终值给用户。
  • attrConfig.setter (Function) – 写属性时的处理函数,传入从 set() 参数得到的属性值和属性名,如果返回非 undefined 则作为新的属性设置值。
  • attrConfig.getter (Function) – 读属性时的处理函数
  • attrConfig.validator (Function) – 写属性时的验证函数,传入从 set() 参数得到的属性值和属性名,返回 false 则不改变该属性值.

Note

如果配置项中没有设置 value, 会调用 valueFn 函数获取默认值并赋给 value.

Attribute.prototype.addAttrs()
void addAttrs ( attrConfigs, values )
批量添加属性.
Parameters:
  • attrConfigs (Object) – 属性名/配置信息对.
  • values (Object) – 属性名/值对, 批量设置当前对象的属性值.
Attribute.prototype.hasAttr()
boolean hasAttr ( name )
判断是否有名为 name 的属性.
Parameters:name (String) – 属性名
Attribute.prototype.removeAttr()
void removeAttr ( name )
删除名为 name 的属性.
Parameters:name (String) – 属性名
Attribute.prototype.set()
boolean set ( name, value, opts )
设置属性 name 的值为 value.
Parameters:
  • name (String) –

    属性名。

    也可以为 “x.y” 形式,此时要求 x 属性为包含 y 属性的普通 Object,这时会设置 x 属性值的 y 属性.但只会触发 x 的相关 change 事件.

  • value (String) – 属性的值
  • opts (Object) –

    控制对象,包括以下控制选项

    opts.silent

    {boolean} - 默认 false , 是否触发 change 系列事件.

    opts.error

    {Function} - 验证失败的回调,包括失败原因

    opts.force

    {Function} - 是否强制触发 change 事件,默认值为 false,当值发生变化时才触发。

Returns:

该次属性设置是否生效(是否通过了 validator 验证)

boolean set ( json, opts )
批量设置属性值.
Parameters:
  • json (String) – 属性名与属性值的键值对
  • opts (Object) –

    控制对象,包括以下控制选项

    opts.silent

    {boolean} - 默认 false , 是否触发 change 系列事件.

    opts.error

    {Function} - 验证失败的回调,包括失败原因

    opts.force

    {Function} - 是否强制触发 change 事件,默认值为 false,当值发生变化时才触发。

Returns:

该批属性设置是否全部生效(是否通过了 validator 验证)

Attribute.prototype.get()
* get ( name )
获取属性 name 的值.
Parameters:name (String) –

属性名

也可以为 “x.y” 形式. 此时要求 x 属性为包含 y 属性的普通 Object。

Note

当没有设置属性值时, 会取该属性的默认值.

Attribute.prototype.getAttrVals()
Object getAttrVals ()
获取目前实例的所有属性键值对集合.
Returns:{Object} 属性键值对集合
Attribute.prototype.reset()
void reset ( name,opts )
重置属性 name 为初始值. (调用一次 set() )
Parameters:
  • name (String) – 属性
  • opts (Object) –

    控制对象,包括以下控制选项

    reset.opts.silent

    {boolean} - 默认 false , 是否触发 change 系列事件.

void reset ( opts )
将所有属性全部重置为初始值. (调用一次 set() )
Parameters:opts (Object) –

控制对象,包括以下控制选项

reset.opts.silent

{boolean} - 默认 false , 是否触发 change 系列事件.

Events Detail

Note

beforeXxChange 的事件处理器可以调用 e.preventDefault 来防止 set 生效

Attribute.Events.beforeAttrNameChange()
beforeAttrNameChange (e)
名为 “attrName” 的属性, 在改变它的值之前触发该事件.
Parameters:
  • e.newVal (*) – 将要改变到的属性值
  • e.prevVal (*) – 当前的属性值
  • e.attrName (String) – 当前的属性名,例如 “x”
  • e.subAttrName (String) – 当前的完整属性名,例如 “x.y”
Attribute.Events.afterAttrNameChange()
afterAttrNameChange (e)
名为 “attrName” 的属性, 在改变它的值之后触发该事件.
Parameters:
  • e.newVal (*) – 当前的属性值
  • e.prevVal (*) – 当前改变前的属性值
  • e.attrName (String) – 当前的属性名,例如 “x”
  • e.subAttrName (String) – 当前的完整属性名,例如 “x.y”
Attribute.Events.*Change()
*Change (e)
每调用 set() 一次后就触发一次该事件.
Arguments:
  • e.attrName (Array) – 本次 set 导致改变的属性名集合
  • e.subAttrName (Array) – 本次 set 导致的属性全名集合
  • e.newVal (Array) – 本次 set 导致的属性当前值集合
  • e.prevVal (Array) – 本次 set 导致的属性在 set 前的值集合

Note

  1. 自定义类不建议直接 argument Attribute ,请继承 Base
  2. *Change 和 afterAttrNameChange 监视一个即可,不要同时监视