O2OA API

Class

Subform

Extends

Subform 子表单组件。

Usable Range

Process CMS

Example

//可以在脚本中获取该组件
//方法1:
var subform = this.form.get("fieldId"); //获取组件
//方法2
var subform = this.target; //在组件本身的脚本中获取

Source

Members

loadedBoolean

表单是否加载(激活)过。

Type

  • Boolean

Example

if( !this.form.get("fieldId").loaded ){ //判断子表单是否加载过
    this.form.get("fieldId").active(); //没有加载过则激活
}

Source

jsonJsonObject

组件的配置信息,比如id,类型,是否只读等等。可以在组件的queryLoad事件里修改该配置来对组件做一些改变。

Type

  • JsonObject

Example

//可以在脚本中获取该组件
var json = this.form.get("fieldId").json; //获取组件对象
var id = json.id; //获取组件的id
var type = json.type; //获取组件的类型,如Textfield 为文本输入组件,Select为下拉组件

//在组件queryLoad事件里设置组件只读。
//当前组件的queryLoad事件运行时还没有在form里注册,通过this.form.get("fieldId")不能获取到当前组件,需要用this.target获取。
var json = this.target.json;
json.isReadonly = true; //设置组件为只读。

Source

Methods

active(callback)

当子表单被设置为延迟加载,通过active方法激活

Parameters

  • callback function

    激活后的回调方法,另外已经激活过该方法还会被执行。

Example

var subform = this.form.get("fieldId");
subform.active(function(){
    //do someting
})

Source

getSource(typeopt) → {Source|SubSource|SubSourceItem}

当前组件在数据源组件中时,可以通过此方法获取所在的上级数据源/子数据源/子数项组件.

Parameters

  • type String <optional>

    需要获取的类型,"source"为表示数据源,"subSource"表示子数据源,"subSourceItem"表示子数据项组件。 如果该参数省略,则获取离当前组件最近的上述组件。

Returns

  • Source SubSource SubSourceItem

Example

var source = this.target.getSource(); //获取当前组件的所在子上级数据源/子数据源/子数项组件.
var data = source.data; //获取数据

var source = this.form.get("fieldId").getSource("source"); //获取数据源组件
var data = source.data; //获取数据

Source

getParentModule(typeopt, validateFunctionopt) → {MWF.xApplication.process.Xform.$Module}

获取当前组件所在的祖先组件.

Parameters

  • type String <optional>

    需要获取的组件类型。 如果该参数省略,则获取离当前组件最近的祖先组件。type有效值如下:

    form- 表单
    common- 通用组件
    datatable- 数据表格
    datatableline- 数据表格行
    datatemplate- 数据模板
    datatemplateline- 数据模板行
    div- 容器组件
    elcommon- Element通用组件
    elcontainer- Element容器组件
    subform- 子表单
    source- 数据源组件
    subsource- 子数据源
    subsourceitem- 子数据项组件
    tab- 分页组件
    tabpage- 分页组件的某个分页
    table- 表格
    tabletd- 单元格
    widget- 部件
  • validateFunction function <optional>

    进一步校验,参数为获取到匹配到类型的组件,返回false继续往上取对应类型的组件,返回true返回该组件。

Returns

Example

var module = this.target.getParentModule(); //获取最近的祖先。

var datatemplateLine = this.target.getParentModule("datatemplateline"); //获取当前组件所在的数据模板行.

var module = this.target.getParentModule(null, function(module){
    return module.json.id === "div_1";
}); //获取当前组件id为div_1的父组件。

Source

addRelatedDisplay(pathopt, cbopt)

给当前组件增加一个显示关联数据,当这个数据改变时,刷新当前组件的可见状态.

Parameters

  • path String | Array.<String> <optional>

    要关联的数据路径。

  • cb function <optional>

    提供一个返回布尔值的函数,用于检查当前组件是否可显示,返回true表示当前组件可见,返回false则隐藏当前组件

Example

//在组件的load事件中,添加下面的代码:
this.target.addRelatedDisplay('dataType', ()=>{
 return this.data.dataType==='1'
});

//加入以上代码后,只要 “dataType” 的值改变,就会检查当前组件是否隐藏或显示。当 dataType 值为 “1” 时,当前组件显示,否则隐藏当前组件。

Source

addRelatedValue(pathopt, cbopt)

给当前组件增加一个值关联数据,当这个数据改变时,刷新当前组件的值.

Parameters

  • path String | Array.<String> <optional>

    要关联的数据路径。

  • cb function <optional>

    提供一个函数,当关联数据发生改变时,执行此函数,返回的值更新为当前组件的值。

Example

//在field类的组件(如文本框)的load事件中,添加下面的代码:
this.target.addRelatedValue(['price', 'count'], ()=>{
 return this.data.price * this.data.count;
});

//加入以上代码后,只要 price 或 count 的值改变,就会计算当前组件的值,其值是 price 乘以 count。

Source

Events

beforeModulesLoad

子表单的设计已经获取到,但还没有插入html及生成内部组件。

modulesLoad

子表单的设计已经获取到,已经插入html,组件json已经获取到,但未生成内部组件。

Example

//获取子表单所有组件id
var moduleIdList = Object.keys(this.target.subformData.json.moduleList);

afterModulesLoad

子表单内部组件加载完成。

Example

//获取子表单所有组件id
var moduleIdList = Object.keys(this.target.subformData.json.moduleList);
//获取子表单所有组件
var moduleList = moduleIdList.map(function(id){
    return this.form.get(id, subformId); //subformId为当前子表单ID,布局组件有可能id冲突,通过subformId来确定当前子表单的组件
}.bind(this))

results matching

    No results matching ''