创建form时带默认数据
作者:王书硕
场景
在新建”项目“时,选择了项目分类后点新建,所选择的分类会出现在表单的”项目分类“中。
- 选择分类
- 点新建
- 自动填写了“项目分类”
怎么实现
1.通过路由传数据
在跳转页面时,将需要的参数放入proxyHistory.push的第二个参数passParams中。
function onClick(billTypeId) {
const hash = appRouterHashManager.generateHash(EN_Project, PageModeEnum.Form, {
mode: BizFormModeEnum.Create,
billTypeId: billTypeId,
});
proxyHistory.push(hash, {
onSuccess: this.presenter.refresh,
category: this.category.curParent,
});
}
proxyHistory.push方法的第二个参数会被放到FormPresenter的options.passParams中。
2.在formPresenter中取数据
passParams中的数据会放到formPresenter的option中,取出使用即可。
class ProjectFormPresenter extends EasyBizFormPresenter<IProject> {
private options: IEasyBizFormPresenterOptions;
constructor(options: IEasyBizFormPresenterOptions, private isBase?: boolean) {
super(EN_Project, options);
this.options = options;
}
@autobind
protected onFormCreated(form: EntityForm<IProject>, disposers: Lambda[]) {
const category = this.opotions.passParams.category;
if (category) {
form.select(F_Project_category).value = category;
}
}
}
❗这里需要注意❗由于表单的入口可能有多个,在使用passParams时,要注意判空。