由於Breeze Required驗證器工作不正常,我們希望將其替換爲我們自己的實現。對於這一點,我有這樣的TS碼之前驗證我的屬性,它被調用:爲什麼我的「必需」驗證器不能用registerFactory替換標準微風所需的驗證器?
breeze.Validator.registerFactory(
(ctx?: breeze.ValidatorFunctionContext) =>
new breeze.Validator(
'required',
(value: string, context: breeze.ValidatorFunctionContext) => {
if (context.hasOwnProperty('allowEmptyStrings') && !context['allowEmptyStrings'] && typeof value === 'string') {
return value != null && value.length > 0;
}
return value != null;
},
ctx),
'required');
當我跟蹤registerFactory方法,我看到的是可轉位性能所需的功能變更的實現。
__config.functionRegistry[fnName] = fn;
現在,當我運行此代碼來驗證我的屬性:
this.isValid(this.entity.entityAspect.validateEntity());
我跟蹤代碼右邊的validate方法裏面微風:
function validate(aspect, validator, value, context) {
所需的驗證是錯的一個,它的微風一個,不是我的?
這是怎麼回事?
謝謝您的回答。正如你在上面的代碼中看到的那樣,我們需要替換缺省的必需驗證器,因爲它不能正確處理allowemptystring,在微風代碼中存在一個錯誤。我會在答案中提供我們的解決方案... –