Closed srhb18 closed 10 years ago
ChildView
不是只给表单用的getData
,都和其它非InputControl
的控件或者ActionPanel
一样处理所以,是否应该继承出ChildFormView这样的东西出来?
那一起做ChildFormAction?
Gray Zhang 已使用 Sparrow (http://www.sparrowmailapp.com/?sig)
已使用 Sparrow (http://www.sparrowmailapp.com/?sig)
在 2014年8月7日 星期四,下午5:45,srhb18 写道:
所以,是否应该继承出ChildFormView这样的东西出来?
— Reply to this email directly or view it on GitHub (https://github.com/ecomfe/ef/issues/27#issuecomment-51451376).
在ChildView中增加一个validate
接口:
/**
* 验证View内的Input控件
*
* @return {Bool} result 是否通过验证
*/
exports.validate = function () {
var inputs = this.viewContext.controls;
var result = true;
u.each(
inputs,
function (input) {
if (input.getCategory() === 'input' || input.getCategory === 'check') {
if (!input.isDisabled()) {
result &= input.validate();
}
}
}
);
return !!result;
};
在主View里注册form
的aftervalidate
处理函数,调用上面的接口:
function validateChildView(e) {
var validate = this.get('strategy-delivery-price-mode-and-unit-price').get('view').validate();
if (!validate) {
e.preventDefault();
}
}
试了一下,目前来看可行
ChildView
不会为表单做特别处理,ef也不会知道有表单这样的页面,剩下的不属于ef的范畴,可以具体想清楚了不同方案和对比选择,在适当的库里讨论
另外我觉得做一个能判断有特别标识的ChildView和ChildAction的Form子类可能更有效
Gray Zhang 已使用 Sparrow (http://www.sparrowmailapp.com/?sig)
已使用 Sparrow (http://www.sparrowmailapp.com/?sig)
在 2014年8月7日 星期四,下午6:08,srhb18 写道:
试了一下,目前来看可行
— Reply to this email directly or view it on GitHub (https://github.com/ecomfe/ef/issues/27#issuecomment-51453391).
现象:ChildView中的InputControl控件在表单提交时,不会触发控件自身的验证逻辑;
原因:Form在触发各控件的验证逻辑前,会先进行一次对InputControl控件的查找,只有满足一定逻辑的控件才会添加进触发验证的数组,其中一个条件为
control.viewContext === form.viewContext
,但显然ChildView中的控件和Form并不在同一个viewContext中,因此ChildView中的控件就不会加入到触发验证的控件数组中去。解决方案: